如果a = 4
想從testTable
獲得所有記錄(6行)。 4
是SP中的默認參數。案例表達式在where子句中
create table testTable(a int, b int, c int)
go
insert into testTable values(2, 101, 100000)
go
insert into testTable values(2, 101, 100001)
go
insert into testTable values(3, 101, 100002)
go
insert into testTable values(3, 102, 100003)
go
insert into testTable values(4, 1, 100004)
go
insert into testTable values(4, 1, 100005)
go
create proc SPtest
@a int = 4,
@b int = 1
as
select * from testTable where a = @a and b = @b
exec SPtest 2, 101
以上工作正常。但我需要這樣的東西:
declare @a int
set @a = 4
select *
from testTable
where a = case @a when 4 then select distinct a from testTable end
'CASE'在SQL Server只能返回 「原子」 的價值觀 - 你不能運行'CASE'語句中的T-SQL代碼。你需要從表中讀取這些不同的值並將它們存儲在一個變量**之前**執行此選擇與案例在where子句 –