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

ストアドプロシージャでプリペアドステートメントを使用するにはどうすればよいですか?


ストアドプロシージャでプリペアドステートメントを使用する場合は、BEGINブロックとENDブロック内に記述する必要があります。これを理解するために、ストアドプロシージャのパラメータとしてテーブルの名前を渡すことで、テーブルからすべてのレコードを取得できる例を作成しています。

mysql> DELIMITER //
mysql> Create procedure tbl_detail(tab_name Varchar(40))
    -> BEGIN
    -> SET @A:= CONCAT('Select * from',' ',tab_name);
    -> Prepare stmt FROM @A;
    -> EXECUTE stmt;
    -> END //
Query OK, 0 rows affected (0.00 sec)

次に、パラメータとしてテーブルの名前を指定してこのプロシージャを呼び出すと、そのテーブルのすべてのレコードが表示されます。

mysql> DELIMITER;
mysql> CALL tbl_detail('Student’);
+------+--------+
| Id   | Name   |
+------+--------+
|    1 | Ram    |
|    2 | Shyam  |
|    3 | Gaurav |
+------+--------+
3 rows in set (0.00 sec)
Query OK, 0 rows affected (0.03 sec)

  1. ストアドプロシージャでIFを使用し、MySQLで選択する方法は?

    ストアドプロシージャでIFを使用し、selectステートメントでIF()を使用することもできます。 selectステートメントのIF() IF() in select statement mysql> select if(0=0,'Hello MySQL','condition is wrong'); これにより、次の出力が生成されます- +------------------------------------------------------+ | if('test'='test','Hello 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