SQLServer 使用 @@ERROR
使用 @@ERROR
如果最后的 Transact-SQL 语句执行成功,则 @@ERROR 系统函数返回 0;如果此语句产生错误,则 @@ERROR 返回错误号。每一个 Transact-SQL 语句完成时,@@ERROR 的值都会改变。
因为每个 Transact-SQL 语句执行完毕时,@@ERROR 都会得到一个新的值,@@ERROR 可用以下两种方法处理:
- 在 Transact-SQL 语句后,马上检测或使用 @@ERROR。
- 在 Transact-SQL 语句完成后,马上把 @@ERROR 存储到一个整型变量中。此变量的值可供以后使用。
在生成错误的批处理、存储过程或触发器中,@@ERROR 是 Microsoft® SQL Server™ 2000 错误的唯一可用部分。错误的所有其它部分,如严重度、状态、包含替换字符串(如对象名称)的消息文本,都只返回到那些能够用 API 错误处理机制进行错误处理的应用程序中。同时,@@ERROR 只由错误产生,而不由警告产生;因此,批处理、存储过程和触发器对于那些可能已经产生了的警告没有可见性。
@@ERROR 通常用于表示存储过程的成功或失败。整型变量初始化为 0。完成每个 Transact-SQL 语句后,都要测试 @@ERROR 是否为 0。如果 @@ERROR 不是 0,将被存储在变量中。存储过程然后在 RETURN 语句中返回变量。如果过程中的 Transact-SQL 语句都没有错误,变量保持为 0。如果一个或多个语句生成错误,则变量包含最后的错误号。下面是有此逻辑的简单存储过程:
USE NorthwindGODROP
-- PROCEDURE SampleProcedureGO
-- CREATE a procedure that takes one input parameter
-- and returns one output parameter and a return code.
CREATE PROCEDURE SampleProcedure
@EmployeeIDParm INT ,
@MaxQuantity INT OUTPUT
AS -- Declare and initialize a variable to hold @@ERROR.
BEGIN
DECLARE @ErrorSave INT
SET @ErrorSave = 0 -- Do a SELECT using the input parameter.
SELECT FirstName ,
LastName ,
Title
FROM Employees
WHERE EmployeeID = @EmployeeIDParm -- Save any non-zero @@ERROR value.
IF ( @@ERROR <> 0 )
SET @ErrorSave = @@ERROR-- Set a value in the output parameter.
SELECT @MaxQuantity = MAX(Quantity)
FROM [Order Details]-- Save any non-zero @@ERROR value.
IF ( @@ERROR <> 0 )
SET @ErrorSave = @@ERROR-- Returns 0 if neither SELECT statement had -- an error, otherwise returns the last error.
RETURN @ErrorSave
END
GO
也有 @@ERROR 与 @@ROWCOUNT 一起使用的时候。在以下的示例中,@@ERROR 用于确定是否出现违反约束的错误,而 @@ROWCOUNT 则在一些行被成功更改的情况下,用于确定由 UPDATE 语句修改的行数。
BEGIN TRAN UPDATE Northwind.dbo.Products SET UnitPrice = UnitPrice * 1.1 WHERE CategoryID
SQLServer 使用 @@ERROR的更多相关文章
- Sqlserver 2008 error 40出现连接错误的解决方法
说明(2017-5-25 15:00:16): 核心:把端口号改成1433 Sqlserver 2008 error 40出现连接错误的解决方法
- 解决.net core3.1使用docker部署在Ubuntu上连接sqlserver报error:35的问题
最近把一个项目从core2.2迁移至core3.1,在本地win上跑没有问题,但是上线到生产Ubuntu docker环境下连接不上sqlserver报以下错误. A connection was s ...
- 【数据库】 Sqlserver 2008 error 40出现连接错误的解决方法
经常要连接到远程数据库上,因此常常碰到这个错误,然后又屡次忘记解决方法,所以今天坐下笔迹,好下次能快速回忆起来. 一.首先检查数据库的TCP/TP是否启动 1.启动Sql server配置管理器 2. ...
- java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法
在进行jdbc直接操作数据库时 : 我们需要对该工程进行一次导包(引入"msbase.jar" "mssqlserver.jar" "msuti ...
- SQLServer 2008 :error 40 出现连接错误
在与SQLServer建立连接时出现与网络相关的或特定与实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且SQL SERVER已配置允许远程链接.(provide:命名管道提供程序,e ...
- 解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during ...HRESULT: 0x80070422(注意尾部的错误号)
解决:安装SQL Server 2008 Native Client遇到错误(在Navicat premium新建sqlserver连接时 需要):An error occurred during . ...
- c# 使用MS SqlServer,连接成功,但是还报异常A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0。。。。
c# 使用MS SqlServer,连接成功,但是还报异常A connection was successfully established with the server, but then an ...
- SQLServer xp_instance_regread returned error 5,Access is denied(配置最小权限)
公司一套智能巡检系统,客户需要最小的权限去给这套系统使用:配置完后发现很多权限报错,有一条是关于xp_instance_regread读系统注册表error 5的报错.常理error 5.是属于系统权 ...
- [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结
今天做一个特殊的业务处理,用JDBC连接SQLServer数据库载入驱动的时候,报例如以下错误: java.sql.SQLException: [Microsoft][SQLServer 2000 D ...
随机推荐
- [LeetCode169]Majority Element求一个数组中出现次数大于n/2的数
题目: Given an array of size n, find the majority element. The majority element is the element that ap ...
- servlet(jsp)中的重定向和转发
servlet(jsp)中的重定向和转发 由一个servlet(jsp)从内部转向还有一个servlet(jsp)有两种方式:转发和重定向. 转发:是由一个web组件(servlet)将未完毕的处理交 ...
- android得知----overridePendingTransition
1 Activity动画是指从一个切换activity跳到另一个activity随着电影. 它由两部分组成:第一部分是一个activity动画出口:中的第二个另一部分activity动画被访问: 于A ...
- Server SAN:弄潮儿云计算时代
最初发表于<程序猿>2014年7每月一次. 4月30日本.Redhat公布1.71十亿收购Ceph开发商Inktank公司,加上之前2011年10月1.36十亿收购Gluster,Redh ...
- ZendStudio10.6.1如何安装最新的集成svn小工具?
选择Help菜单->Install New Software...在Work with输入http://subclipse.tigris.org/update_1.10.x,等待完成后,.除了S ...
- linux权限和ntfs知识文件系统权限
左右ntfs权限的问题 文件权限: [-dcbps][u:rwx][g:rwx][a:rwx] 当中: r=4, w=2, x=1, u=owner, g=group, a=all user ...
- Java拾遗(一):浅析Java子类和父类的实例化顺序 及 陷阱
本文主要介绍Java里经常使用的子类和父类的变量实例化顺序及陷阱,并结合一个Android实例来探讨此问题.日后编程中应尽量避免此陷阱. 首先看以下一段代码: 定义一个虚类Server.java pa ...
- [MySQL]-->询5
几天之内解决在新年发行一个同事的生日过程
前言: 遇到朋友提问,例如以下:SELECT * FROM ali_users WHERE DATEDIFF(CAST(CONCAT(DATE_FORMAT(NOW(),'%y'),D ...
- iOS中通讯录电话号码空格问题
今天在读取通讯录的时候,读取到的手机号码格式为* (***) ***-****的,乍看下,数字中间有空格."-".(.)的非数字字符. 然后我就打算替换这些非数字字符,结果替换完, ...
- android 渐变drawable
渐变Drawable它是使用<gradient>的标记的形状Drawable定义子节点的定义. 每个梯度Drawable求至少要有一个startColor和endColor属性,而且支持一 ...