1. 文字列ストアド プロシージャの定義
MySQL では、DELIMITER コマンドを使用して「;」とは異なる区切り文字を指定し、ストアド プロシージャ ステートメント内で複数の SQL を使用できます。たとえば、次の例では my_proc という名前のストアド プロシージャが定義されており、区切り文字 "//" が使用されています。
DELIMITER // CREATE PROCEDURE my_proc() BEGIN -- 定义字符串变量 DECLARE my_str VARCHAR(50) DEFAULT 'Hello, world!'; -- 输出字符串变量 SELECT my_str; -- 修改字符串变量的值 SET my_str = CONCAT(my_str, ' MySQL!'); -- 再次输出字符串变量 SELECT my_str; END // DELIMITER ;
上の例では、まず DELIMITER コマンドを使用して区切り文字を "/ /" に設定します。次に、my_str という名前の文字列変数を初期値「Hello, world!」で定義します。次にストアドプロシージャにmy_str変数の値を出力し、SETコマンドで値を変更したところ、my_str変数の値が出力されると「Hello,world!」に変わっていることがわかりました。 MySQL!」。
2. 文字列ストアド プロシージャにパラメータを渡す
通常、実際のアプリケーションでは、パラメータに基づいてさまざまな操作を実行するためにストアド プロシージャにパラメータを渡す必要があります。次の例では、my_proc という名前のストアド プロシージャが定義されています。このプロシージャは 2 つのパラメータ (x と y) を受け取り、それらの合計を計算して結果を返します。
DELIMITER // CREATE PROCEDURE my_proc(IN x INT, IN y INT, OUT result INT) BEGIN SET result = x + y; END // DELIMITER ;
上の例では、x は IN キーワードと を使用して定義されています。 y は入力パラメータであり、OUT キーワードを使用して result を出力パラメータとして定義します (つまり、ストアド プロシージャは result の値を返します)。ストアド プロシージャの本体には、x と y の値を加算し、結果を結果変数に格納する計算 SQL ステートメントが含まれているだけです。
次に、CALL コマンドを使用して my_proc ストアド プロシージャを呼び出し、たとえば次の 2 つのパラメータを渡すことができます。
SET @x = 10; SET @y = 20; CALL my_proc(@x, @y, @result); SELECT @result;
上の例では、2 つの変数 @x と @y が最初です。定義し、値を 10 と 20 に割り当てます。次に、CALL コマンドを使用して my_proc ストアド プロシージャを呼び出し、@x と @y を入力パラメータとして渡します。最後に、ストアド プロシージャの出力結果 @result が出力されますコンソールに。
3. IF ステートメントとループ構造を使用する
ストアド プロシージャに IF ステートメントとループ構造を適用すると、より複雑なロジックを実現できます。たとえば、次の例では、パラメーター n を受け取り、フィボナッチ数列の n 番目の数を計算し、結果を返す my_proc という名前のストアド プロシージャを定義します。
DELIMITER // CREATE PROCEDURE my_proc(IN n INT, OUT result INT) BEGIN DECLARE i INT DEFAULT 1; DECLARE a INT DEFAULT 1; DECLARE b INT DEFAULT 1; IF n <= 0 THEN SET result = 0; ELSEIF n = 1 OR n = 2 THEN SET result = 1; ELSE WHILE i < n DO SET result = a + b; SET a = b; SET b = result; SET i = i + 1; END WHILE; END IF; END // DELIMITER ;
上記の例では、判定に IF ステートメントを使用します。 n が 0 以下の場合は 0 を直接返し、n が 1 または 2 の場合は 1 を返し、それ以外の場合は WHILE ループを使用してフィボナッチ数列の n 番目の数を計算します。
CALL コマンドを使用して、my_proc ストアド プロシージャを呼び出し、パラメータを渡すことができます。例:
SET @n = 10; CALL my_proc(@n, @result); SELECT @result;
上記の例では、パラメータ @n を 10 に割り当て、my_proc ストアド プロシージャを呼び出します。プロシージャと @result の出力がコンソールに出力されます。フィボナッチ数列の 10 番目の数値は 55 であるため、最終出力は 55 になるはずです。
以上がmysql文字列ストアドプロシージャとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。