MySQLストアドプロシージャの出力を抑制する方法は?
MySQLストアドプロシージャの出力を抑制するために、変数を使用できます。まずテーブルを作成しましょう。
mysql> create table person_information -> ( -> Id int, -> Name varchar(20) -> ); Query OK, 0 rows affected (0.50 sec)
以下は、挿入コマンドを使用してテーブルにいくつかのレコードを挿入するためのクエリです。
mysql> insert into person_information values(100,'John'); Query OK, 1 row affected (0.17 sec) mysql> insert into person_information values(101,'Chris'); Query OK, 1 row affected (0.22 sec) mysql> insert into person_information values(102,'Robert'); Query OK, 1 row affected (0.16 sec)
以下は、selectコマンドを使用してテーブルのレコードを表示するためのクエリです。
mysql> select *from person_information;
これにより、次の出力が生成されます
+------+--------+ | Id | Name | +------+--------+ | 100 | John | | 101 | Chris | | 102 | Robert | +------+--------+ 3 rows in set (0.00 sec)
MySQLストアドプロシージャの出力を抑制するクエリは次のとおりです。
mysql> DELIMITER // mysql> CREATE PROCEDURE sp_supressOutputDemo() -> BEGIN -> set @output=(select Name from person_information where id=101); -> END -> // Query OK, 0 rows affected (0.14 sec) mysql> DELIMITER ;
CALLコマンドを使用して上記のストアドプロシージャを呼び出すことができます:
mysql> call sp_supressOutputDemo(); Query OK, 0 rows affected (0.00 sec)
上記のストアドプロシージャを呼び出した後、何も取得されていません。したがって、出力を取得するにはselectステートメントを使用する必要があります。
以下はクエリです
mysql> select @output;
これにより、次の出力が生成されます
+---------+ | @output | +---------+ | Chris | +---------+ 1 row in set (0.00 sec)
-
MySQLストアドプロシージャに条件を正しく実装するにはどうすればよいですか?
ストアドプロシージャで条件を設定するには、次の構文を使用します- if yourCondition then yourStatement1; else yourStatement2'; end if ; end // ストアドプロシージャで欠落しているセミコロンを修正するために、上記の構文を実装しましょう- mysql> delimiter // mysql>
-
MySQLストアドプロシージャでDELIMITERを正しく使用するにはどうすればよいですか?
正しい方法は次のとおりです- DELIMITER // CREATE PROCEDURE yourStoredProcedureName() BEGIN IF yourCondition then yourStatement1 ; else yourStatement2 ; END IF ; END // DELIMITER ; ここで例を見て、ストアドプロシージャを作成しましょう- mysql> DELIMITER // mysql> CREATE PROCEDURE delimit