以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 储存过程中的错误如何返回到前面来 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=120717) |
-- 作者:happyft -- 发布时间:2018/6/22 14:16:00 -- 储存过程中的错误如何返回到前面来 更改了表结构后要刷新下所有视图,看看是否有错, 储存过程中遍历每个视图时 ALTER PROCEDURE [dbo].[usp_RefreshAllView] AS DECLARE MyCursor CURSOR FOR SE LECT name FROM dbo.sysobjects WHERE OBJECTPROPERTY(id, N\'IsView\') = 1 AND (NOT name IN ( \'sysconstraints\', \'syssegments\' )); DECLARE @name VARCHAR(40); OPEN MyCursor; FETCH NEXT FROM MyCursor INTO @name; WHILE (@@fetch_status <> -1) BEGIN IF (@@fetch_status <> -2) BEGIN PRINT @name; --输出表名出错时方便查看 EXEC sp_refreshview @name; END; FETCH NEXT FROM MyCursor INTO @name; END; CLOSE MyCursor; DEALLOCATE MyCursor; 在sql中加入红色的部分执行出错时就知道是哪个视图的错 但如果在ft的界面通过按钮执行储存过程时出错只显示错误,要如何返回这个出错的视图名称呢 ft中按钮事件代码 Dim cmd As New SQLCommand cmd.ConnectionName = Mydata cmd.CommandText = "Exec usp_RefreshAllView" cmd.ExecuteNonQuery() 谢谢! |
-- 作者:有点甜 -- 发布时间:2018/6/22 14:54:00 -- 方法一:Raiserror弹出错误
https://www.baidu.com/baidu?wd=sqlserver+Raiserror
方法二:用另一种方法调用存储过程,返回数据
http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=120425&skin=0
|
-- 作者:HappyFt -- 发布时间:2018/6/22 16:10:00 -- 第一种方法在储存过程中怎么用?网上看半天没懂 BEGIN -- PRINT @name; --输出表名出错时方便查看 EXEC sp_refreshview @name; DECLARE @error_mes VARCHAR(1000); DECLARE @error_obj VARCHAR(1000); SE LECT @error_obj = @name; SET @error_mes = @name + \' 刷新视图时出错\'; RAISERROR(@error_mes, 16, 1, @error_obj); END; 这样写那个视图名也显示不出来,应该怎么写? |
-- 作者:有点甜 -- 发布时间:2018/6/22 16:51:00 -- 在你的存储过程中,try catch,如果有错,直接抛出错误,即可
RAISERROR(\'aaabbbccc\',16,1)
foxtable里面,同样用try catch捕捉错误。 |