我正试图运行这个sp但是......我无法弄清楚错误在哪里。你能帮助我吗?
alter procedure prova @condizione=1, @parametro=39
@condizione1 int,
@parametro int
as
begin
declare @condizione int
set @condizione = @condizione1
SET NOCOUNT ON
select pf.CostumerCode, pf.BelongTo
from tbprodfin pf
where
CASE @condizione
WHEN 1 THEN pf.IdPF
WHEN 2 THEN pf.BelongTo
END = @parametro
end
答案 0 :(得分:0)
鉴于提供的信息很少:我想把你的select子句改为某事。像
select pf.CostumerCode, pf.BelongTo
from tbprodfin pf
where 1 = 1
and ( (@condizione = 1 and @parametro = pf.IdPF)
or (@condizione = 2 and @parametro = pf.BelongTo))
这可能最初不起作用,但它应该让你开始,因为我希望。另请参阅此related question。
答案 1 :(得分:0)
尝试就好了
CREATE procedure prova @condizione int =1,
@parametro int =39,
@condizione1 int --what for??
as
begin
SET NOCOUNT ON
if @condizione=1
begin
select pf.CostumerCode, pf.BelongTo
from tbprodfin pf
where pf.IdPF= @parametro
end
else
begin
if @condizione=2
begin
select pf.CostumerCode, pf.BelongTo
from tbprodfin pf
where pf.BelongTo= @parametro
end
end
end
答案 2 :(得分:0)
如果我明白你想要什么。有结果使用CASE ...
select pf.CostumerCode, pf.BelongTo
from tbprodfin pf
where
(CASE WHEN @condizione = 1 THEN pf.IdPF
WHEN @condizione = 2 THEN pf.BelongTo END) = @parametro