首页 > 数据库 >【转载】MSSQL @@ERROR 使用

【转载】MSSQL @@ERROR 使用

时间:2023-09-12 11:38:00浏览次数:116  
标签:语句 示例 -- TRY ERROR CATCH 转载 MSSQL

mssql @@ERROR 使用

mssql @@ERROR是一个系统保存的整型变量,它是用来保存上一次Transact-SQL语句执行时发生错误的错误代码。可以使用SELECT @@ERROR查看该变量的值。它通常用在TRY-CATCH块中,在CATCH块中将错误信息输出到日志或者显示给用户。

下面通过两个示例来说明如何使用mssql @@ERROR:

示例一

BEGIN TRY
  -- 执行有错误的SQL语句
  SELECT 1/0;
END TRY
BEGIN CATCH
  -- 输出错误信息
  PRINT 'Error Number: ' + CONVERT(VARCHAR, @@ERROR);
  PRINT 'Error Message: ' + CONVERT(VARCHAR, ERROR_MESSAGE());
END CATCH

在这个示例中,TRY块中执行了一个有错误的SQL语句,即SELECT 1/0。这个语句会产生除数为0的运行时错误。当错误发生时,控制流就会进入CATCH块中,使用@@ERROR和ERROR_MESSAGE函数可以分别输出错误代码和错误消息到控制台或者日志文件里。

示例二

BEGIN TRANSACTION;
BEGIN TRY
  -- 执行一些SQL语句
  INSERT INTO ExampleTable (Col1, Col2) VALUES ('Value1', 'Value2');
  UPDATE ExampleTable SET Col1 = 'NewValue1' WHERE Col1 = 'Value1';
END TRY
BEGIN CATCH
  -- 回滚事务
  IF @@TRANCOUNT > 0
    ROLLBACK TRANSACTION;
  -- 输出错误信息
  PRINT 'Error Number: ' + CONVERT(VARCHAR, @@ERROR);
  PRINT 'Error Message: ' + CONVERT(VARCHAR, ERROR_MESSAGE());
END CATCH
COMMIT TRANSACTION;

在这个示例中,执行两个SQL语句,分别是INSERT和UPDATE。如果在执行这两个语句中的任何一个语句中发生错误,那么就会触发CATCH块中的代码,回滚事务并输出错误信息。这个模式可以确保数据一致性,即如果出现错误会回滚所有语句并撤销修改,避免数据损坏。

 

标签:语句,示例,--,TRY,ERROR,CATCH,转载,MSSQL
From: https://www.cnblogs.com/reakal/p/17695705.html

相关文章

  • 【转载】MSSQL中的 GOTO 语句
    MSSQL中的GOTO语句Goto语句是微软的SQLServer关系数据库提供了非常实用的编程控制语句,可以帮助开发人员实现复杂的逻辑控制。它有三种用法,分别是“跳转到指定标记”,“跳转到当前请求域”和“跳转到新请求域”。 Goto语句可用于提高存储过程、触发器和脚本的可读性,简化编程模......
  • 【Azure Redis】Redis-CLI连接Redis 6380端口始终遇见 I/O Error
    问题描述使用Redis-cli连接Redis服务,因为工具无法直接支持TLS6380端口连接,所以需要使用stunnel配置TLS/SSL服务。根据文章(LinuxVM使用6380端口(SSL方式)连接AzureRedis(redis-cli&stunnel):https://www.cnblogs.com/lulight/p/14188279.html),配置stunnel后,始终无法连接成......
  • docker-compose 报错:ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+
    没有解决问题的操作wgethttps://www.openssl.org/source/openssl-1.1.1v.tar.gztar-zxvfopenssl-1.1.1v.tar.gzcdopenssl-*./config--prefix=/usr/local/ssl--openssldir=/usr/local/sslsharedmakesudomakeinstallecho"/usr/local/ssl/lib"|sudotee/e......
  • .NET Framework 4.7.2下 Hangfire 的集成(转载)
    原文地址:.NETFramework4.7.2下Hangfire的集成-SamXiao-博客园(cnblogs.com).NETFramework4.7.2下Hangfire的集成  参考资料:开源的.NET定时任务组件Hangfire解析:https://www.cnblogs.com/pengze0902/p/6583119.html.NetCore简单的Hangfire部署Demo:https://......
  • ValueError: Per-Channel support with QDQ format requires onnx opset version 13 o
    问题:在做静态量化是,遇见onnxopsetversion版本报错解决办法:withtempfile.NamedTemporaryFile()asfp:torch.onnx.export(model,args=tuple(dummy_input.values()),f=output_model_name,input_name......
  • _tkinter.TclError: invalid command name ".!label.!text" 原因及方法
    文本框对象报错_tkinter.TclError:invalidcommandname".!label.!text"具体背景:创建txt文本框,用for循环去创建文本框,然后全局变量接受文本框对象,重复进入界面后就出现错误提示提示对象名无效,回去翻看代码得出原因,下列是源代码text_boxes=[]#外部数组用于存储文本框对......
  • k8s集群在扩容的是某个节点出现 Error querying BIRD: unable to connect to BIRDv4 s
    k8s集群在扩容的是某个节点出现ErrorqueryingBIRD:unabletoconnecttoBIRDv4socket1、问题背景:原因是因为新扩容的机器在扩容之前安装过docker切和当前的版本相差较大:在k8s扩容的时候扩容完发现calico异常,describe查看事件后发现报错如下:发现Kubernetes容器集群中有......
  • [转载]生产追溯打印的二维码为什么选用 Data Matrix 编码格式(附QR码介绍)
    Datamatrix原名Datacode,由美国国际资料公司(InternationalDataMatrix,简称IDMatrix)于1989年发明。Datamatrix是一种矩阵式二维条码,其发展的构想是希望在较小的条码标签上存入更多的资料量。Datamatrix的最小尺寸是目前所有条码中最小的,尤其特别适用于小零件的标识,以及直接印刷......
  • 【转载】典例
    本文改编自真实事件典例[每逢夏季,折花市总是会迎来最难熬的一段日子,空气中总是有一股热浪,蝉有气无力的嘶鸣着,像是要把这难熬的痛苦一并呕出来;街上静悄悄的,偶尔会有车经过的声音,适逢六月下旬,又到了一个学期的尾声,远处依稀听到孩子们的欢声笑语,可以判断出是考试结束后,大家正满怀期待......
  • 多模块项目依赖中,项目启动失败-org.yaml.snakeyaml.error.YAMLException: java.nio.ch
    异常问题专栏收录该内容22篇文章1订阅订阅专栏错误:org.yaml.snakeyaml.error.YAMLException:java.nio.charset.MalformedInputException:Inputlength=1原因:yaml/yml配置文件解析失败解决:把项目编码(FileEncodings)全部设置为UTF-8,后重启IDEA软件;其中,若为多模块项目依......