--你看一下这两个示例吧
--示例1:
use northwind
go
declare @str varchar(100)
set @str='delete orders where orderid=10248'
exec (@str)
if @@error<>0 select @@error
--示例2:
use northwind
go
declare @str varchar(100)
set @str='delete orders where orderid=10248'
exec (@str)
select @@error
select @@error
--示例1:
use northwind
go
declare @str varchar(100)
set @str='delete orders where orderid=10248'
exec (@str)
if @@error<>0 select @@error
--示例2:
use northwind
go
declare @str varchar(100)
set @str='delete orders where orderid=10248'
exec (@str)
select @@error
select @@error
在exec (@sSQL)后,就将@@error的值存放在@error中.
这样的话,就不怕@@error这个全局变量被修改了.
然后根据@error的值是不是为0,进行下一步的操作
不行啊。
防到存储过程中一执行,还是提示错误啊,错误信息为:
服务器: 消息 547,级别 16,状态 1,行 1
DELETE 语句与 COLUMN REFERENCE 约束 'FK_Order_Details_Orders' 冲突。该冲突发生于数据库 'Northwind',表 'Order Details', column 'OrderID'。
语句已终止。
但是并没有建立级联删除。
就提示错误了。
这个我想你也是会的。如果你不想让它显示出那些出错语句的话,那么就比较麻烦了。
可能修改系统设置的话,可以。
但是完全没有必要啊。还有一种方法就是在删除前预先判断一下,或是建立一个delete触发器。
你说的对,其实我就是想知道:“系统有没有提供这种功能:判断某条语句是否可以正常执行”
现在我明白了。