sql >> データベース >  >> RDS >> Mysql

ルーチン...のストアドプロシージャエラー引数1は、BEFOREトリガーの変数またはNEW疑似変数ではありません

    問題は手続きの呼び出しにあると思います。

    OUTをサポートしないバージョンのMySQLコネクタを使用 パラメータの場合、通常の回避策は、MySQLユーザー変数を使用して戻り値を保持し、クエリを実行してそれらの変数の値を取得することです。

    まず、ストアドプロシージャを実行し、MySQLにOUT引数の値を変数に入れさせます。

    CALL `Get_Next_Processing_Video`(@IDVideo, @YoutubeIDVideo);
    

    これらの変数はコマンドパラメータではないことに注意してください。これらは、MySQLセッションで保持される変数です。これらの変数の値を取得するには、同じMySQL接続を使用して、プロシージャを呼び出した直後に:

    SELECT @IDVideo, @YoutubeIDVideo ;
    

    そして、1行を返すと予想される他のSELECTステートメントと同じように、そのクエリの結果セットを処理します。

    更新:

    OUTパラメータをサポートするMySQLコネクタの最新バージョンでは、メンバー属性を設定して、これらのパラメータがOUTパラメータであることを指定する必要があると思います。

    cmd.Parameters["out_IDVideo"].Direction = ParameterDirection.Output;
    cmd.Parameters["out_YoutubeIDVideo"].Direction = ParameterDirection.Output;
    

    前に示したように...

    OUTパラメータをサポートしていなかった古いバージョンのMySQLコネクタでは、回避策は、MySQL変数を引数として使用してプロシージャを呼び出すことでした。プロシージャ呼び出しから返された値は、MySQLセッションで保持されます。プロシージャを呼び出した直後に、SELECTを実行してユーザー変数の内容を取得します。



    1. 単一のテキストエリアを使用してmysqlに複数の電子メールを挿入します

    2. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:

    3. PDOフェッチ/fetchAll

    4. チェーンドロップダウンリストにAjaxとJavascriptを入力できません