create proc test @sql varchar(1000) as exec(@sql) if @@error <> 0 return 1 else return 0
to 马可 这样sql还是要返回系统提示的错误to victorycyz :on error不好控制
to Rotaxe: 试试:create proc test @sql varchar(1000) as exec(@sql) if @@error <> 0 return 1 else return 0exec test '12312312'
老大,VB中提供的错误处理机制好像只有 ON ERROR 吧。
感谢楼上的各位兄弟姐妹帮忙啊~~~ 问题还没解决;( 头痛ing
改一下 CREATE proc test @sql varchar(1000) as SET NOEXEC on exec(@sql) if @@error <> 0 return 1 else return 0 GO exec test '12312312' 0
sorry,上面的不对。 好像没有什么别的办法
必须要用on error屏蔽掉SQL本身的错误提示才行.
那么return 0 ,return 1之类不是没有必要了?
不知道SET NOEXEC ON 是不是可以;0 帮助中说: 当 SET NOEXEC 为 ON 时,Microsoft® SQL Server™ 编译每个批处理 Transact-SQL 语句但并不执行它们。当 SET NOEXEC 为 OFF 时,所有批处理将在编译后执行。在 SQL Server 中,语句的执行包括两个阶段:编译和执行。该设置可用于让 SQL Server 在执行 Transact-SQL 代码时,验证代码中的语法和对象名。它也可以用于调试通常是较大的批处理语句一部分的语句。SET NOEXEC 设置是在执行或运行时设置,而不是在分析时设置。但是我set off了也没有执行阿。。
...Err_Proc:
msgbox "自定义的错误消息."
@sql varchar(1000)
as
exec(@sql)
if @@error <> 0
return 1
else
return 0
试试:create proc test
@sql varchar(1000)
as
exec(@sql)
if @@error <> 0
return 1
else
return 0exec test '12312312'
问题还没解决;(
头痛ing
CREATE proc test
@sql varchar(1000)
as
SET NOEXEC on
exec(@sql)
if @@error <> 0
return 1
else
return 0
GO
exec test '12312312'
0
好像没有什么别的办法
帮助中说:
当 SET NOEXEC 为 ON 时,Microsoft® SQL Server™ 编译每个批处理 Transact-SQL 语句但并不执行它们。当 SET NOEXEC 为 OFF 时,所有批处理将在编译后执行。在 SQL Server 中,语句的执行包括两个阶段:编译和执行。该设置可用于让 SQL Server 在执行 Transact-SQL 代码时,验证代码中的语法和对象名。它也可以用于调试通常是较大的批处理语句一部分的语句。SET NOEXEC 设置是在执行或运行时设置,而不是在分析时设置。但是我set off了也没有执行阿。。