MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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)

  1. MySQLストアドプロシージャに条件を正しく実装するにはどうすればよいですか?

    ストアドプロシージャで条件を設定するには、次の構文を使用します-     if yourCondition then    yourStatement1;      else    yourStatement2';       end if ;     end     // ストアドプロシージャで欠落しているセミコロンを修正するために、上記の構文を実装しましょう- mysql> delimiter // mysql>

  2. MySQLストアドプロシージャでDELIMITERを正しく使用するにはどうすればよいですか?

    正しい方法は次のとおりです- DELIMITER // CREATE PROCEDURE yourStoredProcedureName() BEGIN  IF  yourCondition then      yourStatement1 ; else     yourStatement2 ; END IF ; END // DELIMITER ; ここで例を見て、ストアドプロシージャを作成しましょう- mysql> DELIMITER // mysql> CREATE PROCEDURE delimit