ストアドプロシージャでプリペアドステートメントを使用するにはどうすればよいですか?
ストアドプロシージャでプリペアドステートメントを使用する場合は、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