参数化存储过程错误

时间:2012-02-17 12:03:21

标签: sql-server sql-server-2008 sql-server-2005

我正在使用SQL Server 2005 Management Studio Express。硬币和主题是我的表格。我使用上面的两个创建了一个存储过程并且被

打了
  

错误:消息102,级别15,状态1,过程主题,行1   'id2'附近的语法不正确。

这是我的整个程序:

create procedure themestat(id2 In numeric, id1 In numeric)
is
   @userid nvarchar(50), @co nvarchar(50), @price nvarchar(50)
begin
   update themes set prioirty=1 where themeid=id2;
   select credits as co from coins where uid=id1;
   select rate as price from themes where priority=1;
   if(co>price)
   begin
     update themes set status=1 where priority=1;
     update themes set priority=0 where themeid=id2;
   end
   else
   begin
     update themes set priority=0 where theme=id2;
     PRINT 'no sufficient coins'
   end
end

我很想知道我哪里出错了?

1 个答案:

答案 0 :(得分:4)

我不确定你从哪里获得语法,但是数据类型被声明为'@param type',所以第一行应该是:

create procedure themestat 
    @id2 numeric
    @id1 numeric

然后显然会根据需要更改id1和id2的所有引用。脚本中还有其他语法错误(缺少declareis而不是as,可能还有其他错误 - 我看起来并不太近。)

这让我想知道你是否来自不同的SQL方言?我建议在MSDN(以及其他页面)上阅读CREATE PROCEDURE