2012-02-17 2 views
0

SQL Server 2005 Management Studio Expressを使用しています。コインとテーマは私のテーブルです。私は上記の2を使用してストアドプロシージャを作成し、ここでパラメータ化ストアドプロシージャエラー

Error:Msg 102, Level 15, State 1, Procedure themestat, Line 1
Incorrect syntax near '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 

私は私が間違っていた場所を知って好奇心?

+2

[プロシージャの作成](http://msdn.microsoft.com/en-us/library/ms187926.aspx)のドキュメントを参照すると、間違っていた箇所を見つけることができます。まずパラメータ '@ parameter'を宣言する方法ですが、それ以上の問題があります。 –

答えて

4

私はあなたからの構文を持っている場所がわからないんだけど、データ型は「@paramタイプ」として宣言されているので、最初の行は次のようになります。

create procedure themestat 
    @id2 numeric 
    @id1 numeric 

が続いて明らかにID1のすべての参照を変更しますid2を適切に設定します。スクリプトに他の構文エラーがあります(declareisの代わりにasがあります)。

これは、あなたが別のSQLの方言から来ているのだろうかと思います。私はCREATE PROCEDUREについて、MSDN(と同様に他のページ)について読んでいます。

+0

関数(arg1、arg2)のように、ストアドプロシージャに引数を渡すことができるかどうかを確認したいだけですか? – Rangesh

+0

それはあなたの構文が完全に間違っているので、どこからその構文が得られるのか不思議に思っていたのですが... –

+0

あなたの周りをgoogledしました。コードは、それについては何の問題もありません。私が探しているのは、私のストアドプロシージャに変数を渡すことです!! – Rangesh

関連する問題