P粉5233350262023-08-25 11:31:10
cursor.callproc
を呼び出した後にストアド プロシージャを取得した結果は、次の要因によって異なります。
仕様 cursor.callprocに次のステートメントがあります:
MySQL Connector、mysqlclient (MySQLdb)、および < /a>PyMySQL) がこれらの状況にどのように対処するかを示します。 < /p>
INOUT または OUT パラメータを通じて返される単一行の結果
MySQL Connector 入力シーケンスの変更されたコピーを cursor.callproc の戻り値として返します。値はタプルです。
ああああ
mysqlclient と PyMySQL では、データベースに出力パラメーターをクエリし、カーソルを介して結果を取得する必要があります。値はタプルのタプルです。クエリされるパラメータ名の形式は '@_{procedure_name}_{params.index(param)}' です。
ああああ
単一の結果セット内の 1 つ以上の行、INOUT パラメーターまたは OUT パラメーターは定義されていません
MySQL コネクタ カーソルの stored_results メソッド経由 (cursor.stored_results は DBAPI 仕様の一部ではありません)
ああああ
mysqlclient と PyMySQL は、カーソルの fetch* メソッドを通じて結果を公開します ああああ
複数の結果セット、INOUT パラメータまたは OUT パラメータが定義されていません
MySQL コネクタ カーソルの stored_results メソッド
を通じて結果を公開する
ああああ
mysqlclient と PyMySQL は、cursor.nextset を呼び出す前に次の結果セットに進む必要があります。プロシージャの呼び出しの結果として、追加の空の結果セットが返される可能性があることに注意してください (結果セットが cursor.fetchall を一度だけ呼び出すのではなく、
cursor.nextset<代码> 経由で取得された場合)。
ああああ
P粉0054177482023-08-25 10:38:33
結果セットの 1 つを選択してみましたか?
リーリー SELECT
stmt が 1 つしかない場合でも、複数の結果セットが割り当てられる場合があります。これは、INOUT 変数と OUT 変数を返せるようにするために PHP の MySQLi ストアド プロシージャで行われていることは知っています (繰り返しますが、返されませんが、いずれにせよ割り当てられている可能性があります)。
私が使用している (実行している) 完全なコードは次のとおりです:
リーリー