社区
疑难问题
帖子详情
关于全局变量@@error的问题!!!
imhappyboy
2004-05-04 06:58:54
通常存储过程中的事务都好似以下这样写法:(书上很多这样的例子)
update LeaseSchedule
set PeriodicTotalAmount = 0
where ScheduleID = @ABC
if @@error <> 0 Rollback
但如果在if 语句之前,update语句之后,其他存储过程执行了其他命令,可以修改@@error的值吗?如果可以,那这句if 岂不是没有意义?有没有其他办法,可以判断一句SQL是否成功执行?
...全文
145
9
打赏
收藏
关于全局变量@@error的问题!!!
通常存储过程中的事务都好似以下这样写法:(书上很多这样的例子) update LeaseSchedule set PeriodicTotalAmount = 0 where ScheduleID = @ABC if @@error 0 Rollback 但如果在if 语句之前,update语句之后,其他存储过程执行了其他命令,可以修改@@error的值吗?如果可以,那这句if 岂不是没有意义?有没有其他办法,可以判断一句SQL是否成功执行?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
asa80
2004-05-05
打赏
举报
回复
学习ing
zjbee
2004-05-05
打赏
举报
回复
@@ERROR
返回最后执行的 Transact-SQL 语句的错误代码。
语法
@@ERROR
返回类型
integer
注释
当 Microsoft® SQL Server™ 完成 Transact-SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。
由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。
skh
2004-05-05
打赏
举报
回复
创建一个警报
用一个if判断来触发这个警报就知道了,
有问题Email:songkaihanwu@163.com
life583
2004-05-04
打赏
举报
回复
可以判断@@sqlstatus的状态。看@@sqlstatus是否=0,如果为0则SQL语句执行成功!
zjcxc
2004-05-04
打赏
举报
回复
@@error仅受你的当前过程的语句的影响
zjcxc
2004-05-04
打赏
举报
回复
@@ERROR
返回最后执行的 Transact-SQL 语句的错误代码。
语法
@@ERROR
返回类型
integer
注释
当 Microsoft® SQL Server™ 完成 Transact-SQL 语句的执行时,如果语句执行成功,则 @@ERROR 设置为 0。若出现一个错误,则返回一条错误信息。@@ERROR 返回此错误信息代码,直到另一条 Transact-SQL 语句被执行。您可以在 sysmessages 系统表中查看与 @@ERROR 错误代码相关的文本信息。
由于 @@ERROR 在每一条语句执行后被清除并且重置,应在语句验证后立即检查它,或将其保存到一个局部变量中以备事后查看。
zjcxc
2004-05-04
打赏
举报
回复
@@error当然要紧跟处理的语句才行。
imhappyboy
2004-05-04
打赏
举报
回复
有些书上不是这样说的,因@@error是全局变量,是在服务器端维护的,所以任何一条SQL命令都可以改变它的值.
zheninchangjiang
2004-05-04
打赏
举报
回复
是顺序执行的,其他语句产生的错误是在你那个@@ERROR中处理不了的
SQL中的
全局变量
(@@)和局部变量(@)
在SQL中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个SQL语句中的某些元素经常变化时,比如选择条件,(至少我想)应该使用局部变量。当然MS SQL Server的
全局变量
也很有用。 >>>>局部变量 声明:DECLARE @local_variable data_
SQL
全局变量
-- @@
error
与 @@ROWCOUNT 生存周期及相关
@@
error
与@@ROWCOUNT一样,会在每一条语句执行后被清除并且重置,看几个例子:insert into tt values(4)print @@
error
print @@rowcount上面的@@rowcount是检测不出insert语句的影响行数的,它是检测上一条语句print @@
error
的影响行数insert into tt values(4)print @@
mysql变量,mysql 变量(局部变量/
全局变量
)使用说明
在mysql变量中分为局部变量@与
全局变量
@@他们都不分大小并,但两种变量用法稍有区别了,下面我来介绍产的用法.共同点:不区分大小写,都是变量.不同点:
全局变量
是系统中只读的,可以在配置文件中进行修改.mysql变量的术语分类:1.用户变量:以"@"开始,形式为"@变量名"用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效.2.
全局变量
:定义时,以如下两种形式出现,set...
SQL SERVER
全局变量
全局变量
全局变量
是由服务器级定义,而不是由用户的程序定义,并且不能修改。其作用范围是任何程序均可以随时调用,引用
全局变量
时必须以标记符“@@”开头。在程序中,我们可以通过
全局变量
来测试系统的设定值或者是T_SQL命令执行后的状态值,SQL Server 2012中包含的
全局变量
: 1、@@CONNECTION:无论连接是成功还是失败,都会返回SQL SERVER自上次启动以来尝试的连接数;
sqlserver中的
全局变量
sqlserver中的
全局变量
。
疑难问题
22,301
社区成员
121,734
社区内容
发帖
与我相关
我的任务
疑难问题
MS-SQL Server 疑难问题
复制链接
扫一扫
分享
社区描述
MS-SQL Server 疑难问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章