2012-05-04 43 views
1

タイプパラメータSYS_REFCURORのOUTパラメータを持つストアドプロシージャがあります。プロシージャを実行する前にC#から、そのOUTパラメータ以外のすべてのパラメータを追加します。しかし、私がプロシージャを実行するとき、私は "間違った数または型の引数"エラーを取得します。私の質問は、私はそのパラメータに値を割り当てるつもりでない場合私はなぜ私のパラメータコレクションにそれを追加する必要がありますか?C# - パラメータコレクションにパラメータを追加する必要があります

+0

答えを確認..... –

答えて

1

ストアドプロシージャの実行後に、sqlのoutパラメータの値がコードで指定したoutパラメータに格納されるため、後で実行する際に使用する必要があります。

パラメータを渡すことを省略したい場合は、出力パラメータにデフォルト値を割り当てて、問題を解決します。例えば

CREATE PROCEDURE MyTest 
    @Data1 int 
    ,@Data3 int = null output 

あなたが上記のように行うならば、あなたはコードで出力パラメータを渡す必要はありません、それはあなたが取得しているエラーを非表示になります。

+0

OracleのOUTおよびIN OUTパラメータにデフォルト値を追加することはできません。 SQL Serverについて知りません。 –

+0

@MikeJM - SQLサーバーを使用すると、オラクルはできますが、私は考えていません。あなたがコードを追加する必要はありません。オプションが残っていません。 –

+0

しかし、1分待ってください。プロシージャのOUTパラメータに値を割り当てないとどうなりますか?これは、OUTパラメータがSYS_REFCURSORであるために発生します。 V_TYPEパラメータが0の場合は、そのカーソルを一部のSELECT文に対してのみオープンします。それ以外の場合は、V_TYPEの値に対してInsert、UpdateまたはDeleteを実行するため、そのOUTパラメータには値を割り当てません。 –

関連する問題