ストアドプロシージャでプリペアドステートメントを使用するにはどうすればよいですか?
ストアドプロシージャでプリペアドステートメントを使用する場合は、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) -
ストアドプロシージャで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
-
MySQLストアドプロシージャでDELIMITERを正しく使用するにはどうすればよいですか?
正しい方法は次のとおりです- DELIMITER // CREATE PROCEDURE yourStoredProcedureName() BEGIN IF yourCondition then yourStatement1 ; else yourStatement2 ; END IF ; END // DELIMITER ; ここで例を見て、ストアドプロシージャを作成しましょう- mysql> DELIMITER // mysql> CREATE PROCEDURE delimit