技术开发 频道

用SET命令捕获多行错误


  象单行一样,解决多行的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
0
相关文章