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

MySQL-ストアドプロシージャの結果を使用してINステートメントを定義する

    現在のストアドプロシージャにはどのようなリターンタイプがありますか?あなたは「リスト」について話しているので、テキスト?

    もっと簡単な方法があるかもしれませんが、(別のストアドプロシージャ内で)実行できることの1つは、別のクエリを作成することです。

    そのためには、MySQLの2つの制限を回避する必要があります。a)ストアドプロシージャ内で動的SQLを実行するには、プリペアドステートメントである必要があります。 b)プリペアドステートメントは、ユーザー変数からのみ作成できます。したがって、完全なSQLは次のとおりです。

    SET @the_list = myStoredProc();
    SET @the_query = CONCAT('SELECT * FROM myTable WHERE columnName IN (' , @the_list , ')');
    PREPARE the_statement FROM @the_query;
    EXECUTE the_statement;
    

    保存されたルーチンから結果セットを返し、それをテーブルとして使用することについて話している場合、それは不可能です。 この制限 を回避するには一時テーブルを作成する必要があります 。




    1. PowerShellでのMySQLタイムアウト

    2. RRPostgreSQLはSSLを使用してリモートPostgresデータベースに接続します

    3. MySQLクエリのシングルクォート、ダブルクォート、およびバックティック

    4. SelectDistinctCountを使用したEFCoreGroupBy