如果testTable
,我想从a = 4
获取所有记录(6行)。 4
是SP中的默认参数。
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
答案 0 :(得分:0)
切割cookie的方法很少,这似乎是最符合逻辑的;
IF @a = 4 THEN
BEGIN
SELECT *
FROM testTable
END
ELSE
BEGIN
SELECT *
FROM testTable
WHERE a = @a and b = @b
END
或者你可以使用或声明;
SELECT *
FROM testTable
WHERE @a = 4 or (a = @a and b = @b)
祝你好运(会评论但我还没有)。
此致
答案 1 :(得分:0)
请试试这个:
create proc SPtest
@a int = 4,
@b int = 1
as
if @a = 4
select distinct a from testTable
else
select * from testTable where a = @a and b = @b
go
exec SPtest
exec SPtest 3,101