用SET命令捕获多行错误
来源:互联网 发布:比特币源码 编辑:程序博客网 时间:2024/05/22 04:35
象单行一样,解决多行的T-SQL返回的结果是一个好习惯。在T-SQL里使用局部变量得到返回的结果记录集,如果用SELECT子句就会掩饰潜在的问题。
如果代码只希望得到一个值,SELECT子句只会分配一个值,尽管实际上可能返回多个值。如果这种分配用SET 命令会发生错误。但是,当你希望得到单个值的记录时,用SET命令会使T-SQL代码更加鲁棒。
下面的脚本演示了这种情况:
CREATE TABLE SETTest
(Pkey INT NOT NULL
CONSTRAINT pk_SETTest primary key,
Name VARCHAR(30) NOT NULL
CONSTRAINT df_col1 DEFAULT 1
)
GO
INSERT SETTest VALUES (1,'Mary Johnson')
INSERT SETTest VALUES (2,'John Highland')
INSERT SETTest VALUES (3,'Ashly Robertson')
INSERT SETTest VALUES (4,'Mary Johnson')
GO
DECLARE @myVar INT
SELECT @myVar = Pkey FROM SETTest WHERE Name = 'Mary Johnson'
GO
DECLARE @myVar INT -- ERROR WILL BE GENERATED
SET @myVar = ( SELECT Pkey FROM SETTest WHERE Name = 'Mary Johnson' )
GO
DROP TABLE SETTest
GO
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 用SET命令捕获多行错误
- [CMD]64位系统上set path命令错误
- 捕获CONN错误
- 捕获参数错误异常
- struts2 捕获404错误
- 线程中捕获错误
- VS2008_C++捕获内存错误
- try捕获JS错误
- JQuery AJAX错误捕获
- JavaScript 捕获错误
- mvc中捕获错误
- WPF:捕获导航错误
- Android UncaughtExceptionHandler,捕获错误
- [.net]捕获错误机制
- UncaughtExceptionHandler,捕获错误
- register_shutdown_function捕获致命错误
- Windows PowerShell 捕获错误
- eval 捕获错误
- Emacs的用法
- 用SQL Mail创建日常报告
- Beetle游戏的实现
- Hibernate数据保存操作方法的原理对比
- junit详解
- 用SET命令捕获多行错误
- ASP.NET 2.0中实现弹窗报警提示 類似Email 到達
- 子类与父类作用域的一点认识
- 用sp_stored_procedures 和 sp_helptext 找到遗忘的存储过程
- 我搞了个服务器
- 命名约束 vs 系统生成的约束
- eclipse不能自动将java文件编译成class文件,刷新(Refrelsh)和重新建立工程都不行。
- fork vfork exec wait使用
- 在移动数据库文件之前使用sp_detach_db / sp_attach_db