OUTパラメータを使用してMySQLストアドプロシージャを作成するにはどうすればよいですか?
わかりやすくするために、次の値を持つ「student_info」という名前のテーブルを使用しています-
mysql> Select * from student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Jaipur | Literature | | 110 | Rahul | Chandigarh | History | | 125 | Raman | Shimla | Computers | +------+---------+------------+------------+ 4 rows in set (0.00 sec)
次に、次のクエリを使用して、サブジェクト名をパラメータとして指定することにより、特定のサブジェクトの合計をカウントするOUTパラメータを使用してストアドプロシージャを作成します。
mysql> DELIMITER // ; mysql> Create Procedure subjects (IN S_Subject VARCHAR(25), OUT total INT) -> BEGIN -> SELECT count(subject) -> INTO total -> FROM student_info -> WHERE subject = S_subject; -> END // Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ;
「S-Subject」は、カウントするサブジェクトの数であるINパラメータであり、「total」は、特定のサブジェクトのサブジェクトの数を格納するOUTパラメータです。
mysql> CALL subjects('Computers', @total); Query OK, 1 row affected (0.02 sec) mysql> Select @total; +--------+ | @total | +--------+ | 1 | +--------+ 1 row in set (0.01 sec) mysql> CALL subjects('History', @total); Query OK, 1 row affected (0.00 sec) mysql> Select @total; +--------+ | @total | +--------+ | 2 | +--------+ 1 row in set (0.00 sec)
-
MySQLで区切り文字を使用してストアドプロシージャを作成する
ストアドプロシージャは、createprocedureコマンドを使用して作成できます。構文は次のとおりです- delimiter // CREATE PROCEDURE yourStoreProcedureName() BEGIN Declare variable here The query statement END // delimiter // 上記の構文を適用して、ストアドプロシージャを作成します。クエリは次のとおりです- mysql> use test; Database changed mysql> delimiter // mysql> cre
-
MySQLストアドプロシージャ:パラメータを出力しますか?
これは、入力(IN)用に1つのパラメーター、出力(OUT)用に2番目のパラメーターを受け取るストアドプロシージャです。 mysql> delimiter // mysql> create procedure Sp_SQRT(IN Number1 INT, OUT Number2 FLOAT) -> Begin -> set Number2=sqrt(Number1); -> end; -> // Query OK, 0 rows affected (0.24 sec) mysql> delimiter ; ストアドプロシージャ