用SET命令捕获多行错误

80酷酷网    80kuku.com

  

象单行一样,解决多行的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



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: