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 のインストールと設定に関する詳細なチュートリアル
1. はじめに最近ブログをアップグレードし、記事ページの下部に前の記事と次の記事に直接ジャンプできる...
目次1. はじめに2. バックアップとリカバリの簡単な定義3. 復旧計画で考慮すべきいくつかの要素4...
CPU 負荷と CPU 使用率これらは両方とも、ある程度、マシンの忙しさを反映できます。 CPU 使...
mysql5.7.21の簡単なインストール構成は次のとおりです。 1. MySQLのインストール1....
目次アイデア傍受を要求するレスポンスインターセプションhttpClient.tsを使用してリクエスト...
序文MySQLクエリはselectコマンドを使用し、limitとoffsetパラメータを使用して、指...
replace ステートメントは、一般的に insert ステートメントに似ています。ただし、テーブ...
目次1. JavaScriptを使用してQRコードを解析する1. QR コードとは何ですか? 2.q...
Linux サーバー A と B が 2 台あり、一方のサーバーから SSH 経由でパスワードなしで...
1. コマンドの紹介ipcs コマンドは、Linux のプロセス間通信機能の状態を報告するために使用...
undefined JavaScript では、値が undefined かどうかを判断したい場合は...
目次序文1. 効果は図の通りです2. 具体的な実施手順1. Vuexの紹介2.webscoked実装...
目次1. 概要1.1 プロトタイプとは何ですか? 1.2 プロトタイプを入手する2. プロトタイプの...
MySQL ログイン パスワードを忘れた場合、解決方法は実はとても簡単です。MySQL メイン構成フ...
序文会社の業務上のニーズにより、独自の MongoDB サービスを構築する予定です。MongoDB ...