象單行一樣,解決多行的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
新聞熱點
疑難解答