SQL必须声明标量变量

这是我的代码CREATEPROCCUNCHUGUOCHENG@NUMBERVARCHAR(10)@rtnINToutputASBEGINDECLARE@tmpNUMBER... 这是我的代码
CREATE PROC CUNCHUGUOCHENG
@NUMBER VARCHAR(10)
@rtn INT output
AS
BEGIN
DECLARE @tmpNUMBER VARCHAR(10)
@NUMBER VARCHAR(10)
@rtn int
if exists (select*from guanliyuanxinxi where NUMBER=@NUMBER)
begin
select @tmpNUMBER=NUMBER FROM guanliyuanxinxi WHERE NUMBER=@NUMBER
IF (@tmpNUMBER=NUMBER)
BEGIN
SET @rtn=0

END
ELSE
BEGIN
UPDATE guanliyuanxinxi SET NUMBER=@NUMBER WHERE NUMBER=@NUMBER
SET @rtn=2
END
end
else
begin
insert into guanliyuanxinxi values(@NUMBER)
SET @rtn=1

end
END
GO
错误提示有

消息 102,级别 15,状态 1,过程 CUNCHUGUOCHENG,第 3 行
'@rtn' 附近有语法错误。
消息 102,级别 15,状态 1,过程 CUNCHUGUOCHENG,第 7 行
'@NUMBER' 附近有语法错误。
消息 137,级别 15,状态 2,过程 CUNCHUGUOCHENG,第 9 行
必须声明标量变量 "@NUMBER"。
消息 137,级别 15,状态 1,过程 CUNCHUGUOCHENG,第 11 行
必须声明标量变量 "@tmpNUMBER"。
消息 137,级别 15,状态 2,过程 CUNCHUGUOCHENG,第 12 行
必须声明标量变量 "@tmpNUMBER"。
消息 137,级别 15,状态 1,过程 CUNCHUGUOCHENG,第 14 行
必须声明标量变量 "@rtn"。
消息 137,级别 15,状态 2,过程 CUNCHUGUOCHENG,第 19 行
必须声明标量变量 "@NUMBER"。
消息 137,级别 15,状态 1,过程 CUNCHUGUOCHENG,第 20 行
必须声明标量变量 "@rtn"。
消息 137,级别 15,状态 2,过程 CUNCHUGUOCHENG,第 25 行
必须声明标量变量 "@NUMBER"。
消息 137,级别 15,状态 1,过程 CUNCHUGUOCHENG,第 26 行
必须声明标量变量 "@rtn"。

要疯了!!!求指导!!!
展开
 我来答
rkc009
2013-06-17 · TA获得超过1499个赞
知道大有可为答主
回答量:2098
采纳率:60%
帮助的人:1701万
展开全部
你的代码太乱啦  !我帮你简单改了下
有  @NUMBER 就更新 没有就新增
 @rtn 为1:表示新增 2:为更新
CREATE PROC CUNCHUGUOCHENG
 @NUMBER VARCHAR(10),
 @rtn INT output
AS
BEGIN
     if exists (select*from guanliyuanxinxi where NUMBER=@NUMBER)
        begin              
                 
                    UPDATE guanliyuanxinxi SET NUMBER=@NUMBER WHERE NUMBER=@NUMBER
                    SET @rtn=2
                 
         end
      else
         begin
             insert into guanliyuanxinxi values(@NUMBER)
             SET @rtn=1             
         end
END
GO
追问
您好,我按着您的代码粘贴以后得到这个结果:
消息 134,级别 15,状态 1,过程 CUNCHUGUOCHENG,第 9 行
变量名 '@NUMBER' 已声明。变量名在查询批次或存储过程内部必须唯一。

您能再帮我修改一下吗?
追答

我 这儿就可以啦 


CREATE PROC Cunchuguocheng @NUMBER VARCHAR(10),
                           @rtn    INT output
AS
  BEGIN
      IF EXISTS (SELECT*
                 FROM   guanliyuanxinxi
                 WHERE  NUMBER = @NUMBER)
        BEGIN
            UPDATE guanliyuanxinxi
            SET    NUMBER = @NUMBER
            WHERE  NUMBER = @NUMBER

            SET @rtn=2
        END
      ELSE
        BEGIN
            INSERT INTO guanliyuanxinxi(NUMBER)
            VALUES     (@NUMBER)

            SET @rtn=1
        END
  END

GO
爱琴海之玲
2013-06-18 · TA获得超过2581个赞
知道小有建树答主
回答量:582
采纳率:75%
帮助的人:340万
展开全部
你们都写了 这么一句代码 UPDATE guanliyuanxinxi SET NUMBER=@NUMBER WHERE NUMBER=@NUMBER

你们没有发现问题么 @number 不唯一么

你们想一想 我们假设@number=1;那么我们表中找到number=1的数据行 把number修改成1 ,这个有意思么? 这样的修改需要修改么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式