存储过程不知道错在哪里了

sadan2121 2010-12-08 06:59:51

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go


ALTER proc [insert_pljhlh]
-- Add the parameters for the stored procedure here
@xqcod varchar(50),@feedatenext int,@Buildcod varchar(3),@feecod varchar(4),@lry varchar(50),@lrrq datetime,@msg varchar(10) OUT

AS
BEGIN TRAN Cs
declare @ownercod varchar(15)
declare @roomcod varchar(15)
declare @fs float
declare @dj float
declare @costsum float
declare @sfyck float
declare @feeperiod int
declare @feedate int
declare @feedatelast int
declare @ownernam varchar(200)
declare @statiscod varchar(4)
declare @jyrq datetime
declare @lsh int
declare @plsfbz int
declare @m int
declare @n int
declare @sfxt int
declare @ztbz int
set @ztbz=1;
set @plsfbz=1;
set @n=0;
select @m=count(*) from roomlst where (xqcod=@xqcod and Buildcod=@Buildcod and zt=1);
while @n<@m
begin
select @roomcod=roomcod from roomlst where xqcod=@xqcod and Buildcod=@Buildcod and zt=1
select @ownercod=ownercod,@fs=fs,@dj=dj,@costsum=je,@feeperiod=feeperiod,@feedatelast = feedatelast, @feedate = feedate ,@sfyck=sfyck from yzsfdy where feedatenext=@feedatenext and roomcod=@roomcod and feecod=@feecod
select @ownernam=ownernam from yzxxb where ownercod=@ownercod
select @statiscod=statiscod from feelst where feecod=@feecod
select @lsh=lsh,@jyrq=jyrq from lshb
set @sfxt=datediff(day,@jyrq,getdate());
if (@sfxt=0)
begin
set @lsh=@lsh+1;
update [lshb] set [lsh]=@lsh,[jyrq]=getdate()
end
else
begin
set @lsh=1;
update [lshb] set [lsh]=1,[jyrq]=getdate()
end
UPDATE [yzsfdy] SET [feedate] = @feedate+@feeperiod, [feedatelast] = @feedatelast+@feeperiod, [feedatenext] = @feedatenext+@feeperiod WHERE (([roomcod] = @roomcod) and ([feecod] = @feecod) and ([feedatenext] = @feedatenext)
if (@sfyck>=@costsum)
begin
INSERT INTO [fsjhwcb] ([roomcod], [ownercod], [ownernam], [feecod],[feedate], [fs], [dj], [costsum], [lry], [lrrq],[statiscod],[jyrq],[plsfbz],[ssje],[sfy],[yjkfje],[ztbz],[jylsh]) VALUES (@roomcod, @ownercod, @ownernam, @feecod, @feedatenext, @fs, @dj, @costsum, @lry, @lrrq,@statiscod,getdate(),@plsfbz,@costsum,@lry,@costsum,@ztbz,@lsh)
end
else
begin
INSERT INTO [fsjhb] ([roomcod], [ownercod], [ownernam], [feecod],[feedate], [fs], [dj], [costsum], [lry], [lrrq]) VALUES (@roomcod, @ownercod, @ownernam, @feecod, @feedatenext, @fs, @dj, @costsum, @lry, @lrrq)
end
set @n=@n+1
end
if (@@error <>0)
BEGIN
rollback tran
set @msg=1
return
END
else
begin
commit tran
set @msg=2
END


报错是消息 156,级别 15,状态 1,过程 insert_pljhlh,第 50 行
关键字 'if' 附近有语法错误。
是if (@sfyck>=@costsum)这个有错误,不知道怎么改
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
guohaiyan518 2010-12-08
  • 打赏
  • 举报
回复
原来是少括号啊。。。。⊙﹏⊙b汗,偶也经常犯这样的错误。
print 是打印的意思。 把你要打印的东西写后面就好了。
sadan2121 2010-12-08
  • 打赏
  • 举报
回复
日了,找出来了
WHERE (([roomcod] = @roomcod) and ([feecod] = @feecod) and ([feedatenext] = @feedatenext)
少了个括号
sadan2121 2010-12-08
  • 打赏
  • 举报
回复
print是什么
wuyq11 2010-12-08
  • 打赏
  • 举报
回复
print 输出值看看
查询分析中执行

110,556

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧