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 レベルのラベル上に置くと、マウスが小さな...
flex は 2009 年のリリース以来、ほぼすべてのブラウザでサポートされています。シンプルでレス...
検索エンジン最適化 (SEO) では実行すべきタスクが多数ありますが、その中でもコードの最適化は重要...
最近では、特定のフォルダ内の特定のファイルを自動的に検索する必要があり、ファイルパスとファイル名を別...
問題の説明MySQL 起動エラー メッセージは次のとおりです。 mysqld を起動します (sys...
目次構造を選択ループ構造その間…しながらforループ…のために…で…の…のためにまとめループの終了壊...
1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...
シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...
目次序文ブラウザにおけるオーディオとビデオに関する知識のまとめビデオエンコーディング包装形態オーディ...
目次1. リクエストを取得する: 2. 投稿リクエスト: 3. 拡張と補足Vue スキャフォールディ...
良いアイデアを見つけたので記録しました。私は以前、スクロール効果を実現するためにjQueryを使用し...
序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...
データは貴重なものであることは誰もが知っています。データをバックアップしなければ、データをそのまま放...
通常のプログラムと比較すると、ダイナミック リンク ライブラリにはメイン関数がなく、一連の関数の実装...