Sql 必须在存储过程中将标量变量“@bit”声明为输出参数
我有这个程序,但当它工作正常时,没有设置输出参数@bit的两个if。当我尝试执行proc p3时,出现以下错误 必须声明标量变量@bit 这是密码Sql 必须在存储过程中将标量变量“@bit”声明为输出参数,sql,sql-server,database,tsql,Sql,Sql Server,Database,Tsql,我有这个程序,但当它工作正常时,没有设置输出参数@bit的两个if。当我尝试执行proc p3时,出现以下错误 必须声明标量变量@bit 这是密码 create proc p3 @codP int, @codM int, @dela datetime, @panala datetime, @pret smallint, @bit bit output as begin declare @val smallint set @val = (select COUNT(*)
create proc p3 @codP int, @codM int, @dela datetime, @panala datetime, @pret smallint, @bit bit output
as
begin
declare @val smallint
set @val = (select COUNT(*)
from OferteSpeciale as OS
where OS.codP = @codP and OS.codM = @codM and
((@panala >= OS.dela and @panala <= OS.panala)
or (@dela >= OS.dela and @dela <= OS.panala) or
(@dela <= OS.dela and @panala >= OS.panala)))
print @val
if (@val = 0)
begin
insert into OferteSpeciale (codP,codM,dela,panala,pret) values (@codP,@codM,@dela,@panala,@pret)
declare @others smallint
set @others = (select COUNT(*)
from Cataloage as c, OferteSpeciale as os
where ((c.codM = @codM and c.codP = @codP and c.pret < @pret) or
(os.codM = @codM and os.codP = @codP and os.pret < @pret)))
if (@others > 0)
set @bit = 0
else
set @bit = 1
end
else
RAISERROR 50001 'There is already a special offer for that product, in that shop, between that dates'
end
declare @bit bit
exec p3 1, 3, '2013-04-15', '2013-04-15', 25, @bit output
作为一个简单的回答,在声明存储过程之后,您错过了一个GO,如果我尝试按照您提供的方式运行它,那么如果我添加GO以将声明从执行中分离,就会出现另一个错误
end
GO
declare @bit bit
exec p3 1, 3, '2013-04-15', '2013-04-15', 25, @bit output
显然,我必须删除存储过程的内容,因为我的数据库中没有这些对象,但问题似乎围绕@Bitedited:,很抱歉,这是一个问题错误