MySQLストアドプロシージャDEFINER=`root` @`% `がローカルホストで機能していませんか?
まず、ホストを確認する必要があります。ホストは「localhost」または「%」にすることができます。ホストのユーザーアカウントの存在を確認します-
mysql> select user,host from MySQL.user;
これにより、次の出力が生成されます-
+------------------+-----------+ | user | host | +------------------+-----------+ | Bob | % | | User2 | % | | mysql.infoschema | % | | mysql.session | % | | mysql.sys | % | | root | % | | @UserName@ | localhost | | Adam Smith | localhost | | David | localhost | | James | localhost | | John | localhost | | John Doe | localhost | | User1 | localhost | | am | localhost | | hbstudent | localhost | | mysql.infoschema | localhost | | mysql.session | localhost | +------------------+-----------+ 17 rows in set (0.00 sec)
次に、ユーザーBobの定義者を変更します。ホストは「%」です。以下は、definer-
を使用してストアドプロシージャを作成するためのクエリです。mysql> DELIMITER // mysql> CREATE DEFINER=`Bob`@`%` PROCEDURE `Message`() BEGIN select "Hello World"; END // Query OK, 0 rows affected (0.14 sec) mysql> DELIMITER ;
次に、CALLコマンドを使用してストアドプロシージャを呼び出します-
mysql> call `Message`();
これにより、次の出力が生成されます-
+-------------+ | Hello World | +-------------+ | Hello World | +-------------+ 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