MySQL を初めて学ぶときは、区切り文字の本当の目的を理解していないかもしれません。区切り文字は、ストアド プロシージャ、トリガー、関数など、MySQL のさまざまな場所で使用されます。 Oracle を学習した人にとって、MySQL を学ぶのは非常に奇妙で困惑するでしょう。 実際には、コマンドが終了したかどうか、および MySQL がそれを実行できるかどうかを MySQL インタープリターに伝えます。 デフォルトでは、区切り文字はセミコロン (;) です。 コマンドライン クライアントでは、コマンド行がセミコロンで終わる場合、mysql は Enter キーを押すとコマンドを実行します。次の文を入力すると
次に Enter キーを押すと、MySQL はすぐにステートメントを実行します。 しかし、場合によっては、MySQL でこれを実行したくないことがあります。複数のステートメントを入力することができ、ステートメントにはセミコロンを含めることができます。 コマンドラインクライアントに次の文を入力しようとすると mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT) mysql> varchar(255) を返します mysql> 開始 mysql> ISNULLの場合 mysql> <strong> '' を返します; </strong> mysql> N < 15の場合 mysql> RETURN LEFT(S, N); mysql> それ以外の場合 mysql> CHAR_LENGTH(S) <= Nの場合 mysql> S を返します。 mysql> それ以外の場合 mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5)); mysql> END IF; mysql> END IF; mysql> 終了; デフォルトでは、ユーザーがすべてのステートメントを入力するまで待ってからステートメント全体を実行することはできません。 mysql はセミコロンに遭遇すると自動的に実行されるためです。 つまり、 RETURN ''; ステートメントが実行されると、MySQL インタープリタが実行されます。 この場合、区切り文字を // や $$ などの他の記号に事前に置き換える必要があります。 mysql> 区切り文字 // mysql> CREATE FUNCTION `SHORTEN`(S VARCHAR(255), N INT) mysql> varchar(255) を返します mysql> 開始 mysql> ISNULLの場合 mysql> '' を返します。 mysql> N < 15の場合 mysql> RETURN LEFT(S, N); mysql> それ以外の場合 mysql> CHAR_LENGTH(S) <= Nの場合 mysql> S を返します。 mysql> それ以外の場合 mysql> RETURN CONCAT(LEFT(S, N-10), '...', RIGHT(S, 5)); mysql> END IF; mysql> END IF; mysql> 終了;// この方法では、MySQL インタープリターは // が出現した場合にのみこのステートメントを実行します。 その上。 MySQL のストレージ プロセスでは、次の点に注意する必要があります。 proc_while_test が存在する場合は PROCEDURE を削除します。 デリミタ;; CREATE DEFINER = root@localhost PROCEDURE proc_while_test(IN n int) 始める i int を宣言します。 int を宣言します。 i = 0 に設定します。 s = 0 に設定します。 i <= n の場合 s = s + i を設定します。i++ を設定します。 i = i + 1 と設定します。 終了WHILE; s を選択します。 終わり ;; 区切り文字 ; 上記の例では、set i++; により while ループ全体でエラーが報告されます。 MySQL ストアド プロシージャでは、i++ をこのように記述することはできません。 i=i+1 の形式で記述する必要があります。 補足:Mysqlにおける区切り文字の役割を見てみましょう 1. 区切り文字 delimiter は MySQL の区切り文字です。MySQL クライアントのデフォルトの区切り文字はセミコロン (;) です。 2. 区切り文字の使用 前の記事では、MySQLトリガーを設定する例があります。 mysql> 区切り文字 // mysql> アカウントの更新前にトリガー upd_check を作成する -> 各行ごとに -> 開始 -> new.amount < 0 の場合 -> new.amount=0 を設定します。 -> elseif new.amount > 100 の場合 -> new.amount を 100 に設定します。 -> 終了の場合; -> 終了; -> // クエリは正常、影響を受けた行は 0 行 (0.00 秒) mysql> 区切り文字; 上記は、まずセパレータを//に設定し、 次の // に遭遇するまで、ステートメント全体は実行されません。 実行後、最後の行 delimiter; は MySQL 区切り文字をセミコロンにリセットします。 変更しない場合、このセッション内のすべての区切り文字は // に基づきます。 要約する 上記は、Mysql における区切り文字の役割の詳細な説明です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。すぐに返信いたします。 以下もご興味があるかもしれません:
|
>>: Centos7 での nginx のインストールと設定に関する詳細なチュートリアル
圧縮アップロード画像、スクラッチカード、ポスター作成、チャートプラグインなど、フロントエンド開発にお...
一部の Web サイトでは、画像が連続的にスクロールしているのをよく見かけます。この効果は、CSS ...
序文文字セットは、一連のシンボルとエンコード規則です。Oracle データベースでも MySQL デ...
目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...
目次JSBridgeの起源JSBridgeの双方向通信原理JSはネイティブを呼び出すネイティブコール...
この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...
問題/障害/シナリオ/要件Eve-ng の仮想マシン OVA のハードディスクは 38G しかないた...
この記事では、参考までに、シンプルなディスククロックを実装するためのjsの具体的なコードを紹介します...
ハイパーリンク <a> タグはリンク ポイントを表します。これは英語の単語「anchor...
前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...
マイクリMyCLI は、自動補完と構文の強調表示を備えた MySQL、MariaDB、および Per...
1. 要件:データベースのバックアップは、実稼働環境にとって特に重要です。データベースのバックアップ...
解決 関数 mergeImgs(リスト) { const imgDom = document.cre...
Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...
1. 永久的な変更、すべてのユーザーに有効# vi /etc/プロファイル//キーボードの[Shi...