MySQLストアドプロシージャを作成するときに`definer`は必要ですか?
いいえ、ストアドプロシージャを作成する場合、定義者の部分は必須ではありません。定義者を作成するときに使用します。
MySQL.userテーブルからすべてのユーザーとホストを確認します-
mysql> select user,host from mysql.user;
以下は出力です-
+------------------+-----------+ | user | host | +------------------+-----------+ | Manish | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | Adam Smith | localhost | | User1 | localhost | | am | localhost | +------------------+-----------+ 9 rows in set (0.03 sec)
ここでは、AdamSmithとして定義者を作成しましょう。ストアドプロシージャを作成するためのクエリは次のとおりです-
mysql> delimiter // mysql> CREATE DEFINER = 'Adam Smith'@'localhost' procedure Sp_Definer() -> begin -> select 'Hello MySQL'; -> end; -> // Query OK, 0 rows affected (0.14 sec) mysql> delimiter ;
CALLコマンドを使用してストアドプロシージャを呼び出します。構文は次のとおりです-
CALL yourStoredProcedureName();
上記のストアドプロシージャを呼び出します。
mysql> call Sp_Definer();
以下は出力です。
+-------------+ | Hello MySQL | +-------------+ | Hello MySQL | +-------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.01 sec)
-
MySQLストアドプロシージャで数学演算を実行しますか?
ストアドプロシージャを作成しましょう。ここでは、量*量を計算しています。つまり、数学演算を実装しています- mysql> delimiter // mysql> create procedure calculation_proc(amount int,quantity int) begin select amount,quantity,(amount*quantity) as Total; end // Query OK,
-
MySQLストアドプロシージャのテーブルにデータを挿入しますか?
ストアドプロシージャのテーブルに挿入するための構文は次のとおりです- create procedure yourProcedureName(OptionalParameter) begin insert into yourTableName() values(yourValue1,yourValue2,...N); end 上記の構文を理解するために、最初にテーブルを作成しましょう- mysql> create table DemoTable1928 ( Id int NOT NUL