序文 MySQLでは、準備、実行、割り当て解除を正式にはPREPARE STATEMENTと呼びます。私は[準備されたステートメント]と呼ぶことに慣れています。使い方は非常に簡単です。では、早速詳しい紹介を見ていきましょう。 サンプルコード 準備可能な stmt から stmt_name を準備します stmt_name を実行 [@var_name [, @var_name] を使用...] - {DEALLOCATE | DROP} stmt_name を準備する 例えば: mysql> PREPARE pr1 FROM 'SELECT ?+?'; クエリは正常、影響を受けた行は 0 行 (0.01 秒) 声明文を準備 mysql> @a=1、@b=10 を設定します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> @a、@b を使用して pr1 を実行します。 +------+ | ?+? | +------+ | 11 | +------+ セット内の 1 行 (0.00 秒) mysql> EXECUTE pr1 USING 1, 2; -- ユーザー変数のみを渡すことができます。 エラー1064(42000):SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルを確認してください。 1行目の「1, 2」付近で使用する正しい構文 mysql> PREPARE pr1 の割り当てを解除します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) PAREPARE STATEMENT を使用すると、各 SQL 実行の構文解析を減らすことができます。たとえば、WHERE 条件付きの SELECT および DELETE、または UPDATE、INSERT を実行する場合、その都度変数値を変更するだけで済みます。 SQL インジェクションも防止でき、パラメータ値にエスケープ文字や区切り文字を含めることができます。 アプリケーションまたは SQL スクリプトに適用可能です。 その他の使用法: 同様に、PREPARE ... FROM はユーザー変数に直接接続できます。 mysql> テーブル a (a int); クエリは正常、影響を受けた行は 0 行 (0.26 秒) mysql> INSERT INTO a SELECT 1; クエリは正常、1 行が影響を受けました (0.04 秒) 記録: 1 重複: 0 警告: 0 mysql> INSERT INTO a SELECT 2; クエリは正常、1 行が影響を受けました (0.04 秒) 記録: 1 重複: 0 警告: 0 mysql> INSERT INTO a SELECT 3; クエリは正常、1 行が影響を受けました (0.04 秒) 記録: 1 重複: 0 警告: 0 mysql> SET @select_test = CONCAT('SELECT * FROM ', @table_name); クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> SET @テーブル名 = 'a'; クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> @select_test から pr2 を準備します。 クエリは正常、影響を受けた行は 0 行 (0.00 秒) 声明文を準備 mysql> pr2 を実行します。 +------+ | ア | +------+ | 1 | | 2 | | 3 | +------+ セット内の 3 行 (0.00 秒) mysql> DROP PREPARE pr2; -- ここで DROP を DEALLOCATE に置き換えることができます クエリは正常、影響を受けた行は 0 行 (0.00 秒) EXECUTE ステートメントを完了するたびに、DEALLOCATE PREPARE ... ステートメントを実行して、実行に使用されたすべてのデータベース リソース (カーソルなど) を解放する習慣を身に付けてください。 さらに、セッション内に準備されたステートメントが多すぎる場合、max_prepared_stmt_count の上限に達する可能性があります。 準備されたステートメントは作成者のセッションでのみ使用でき、他のセッションでは使用できません。 さらに、何らかの方法 (正常または異常) でセッションを終了すると、以前に定義した準備済みステートメントは存在しなくなります。 ストアド プロシージャで使用する場合、プロシージャ内で DEALLOCATE が実行されないと、準備されたステートメントはストアド プロシージャの終了後も有効になります。 要約する 上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に少しでもお役に立てれば幸いです。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM をご愛顧いただき、ありがとうございます。 以下もご興味があるかもしれません:
|
<<: nginx proxy_cache バッチキャッシュクリアスクリプトの紹介
>>: JS を使用して要素がビューポート内にあるかどうかを確認する方法
背景ここ 2 日間 Docker を使用していたところ、コンテナの起動後に date -R の出力タ...
私たち謙虚なプログラマーは、今でもこう歌わなければなりません。「あなたも私も、この世に生まれて、一日...
この記事では、マルチカラムレイアウトドラッグを実装するためのVueの具体的なコードを参考までに共有し...
JSON (JavaScript Object Notation、JS Object Notatio...
MySQLのスイッチングデータ保存ディレクトリの実装方法今日、仕事中に、mysql が保存されている...
クールなフロントエンドページのランダムQRコード検証を参考までに共有します。具体的な内容は次のとおり...
リモートアクセスを有効にする次のコマンドを実行して、root ユーザーのリモート アクセス権を有効に...
目次1. 算術演算子2. 比較演算子3. 論理演算子4. ビット演算子5. 演算子の優先順位1. 算...
目次1. MySQL 8.0.18のインストール2. 環境変数を設定する3. 接続テスト1. MyS...
背景グラデーションと自動フルスクリーンに関する CSS の問題編集長は CSS の開発中に致命的な問...
目次リスナー1.ウォッチエフェクト2.見る1.1 聴くための最初の方法1.2 聞く2つ目の方法1.3...
この記事の例では、参考までに時間セレクターを実装するためのjQueryの具体的なコードを共有していま...
ウェブサイトのアクセス速度を向上させるための徹底的な最適化に関するヒント。ウェブサイトのアクセス速度...
この記事は、参考のためにMySQL 8.0.19のインストールと設定のグラフィックチュートリアルを記...
mysql サービスは開始されていますが、接続できません。この問題を解決するにはどうすればよいでしょ...