MySQLストアドプロシージャは、その中の別のMySQLストアドプロシージャをどのように呼び出すことができますか?
MySQLストアドプロシージャがその中の別のMySQLストアドプロシージャを呼び出す可能性は十分にあります。これを示すために、ストアドプロシージャが別のストアドプロシージャを呼び出してlast_insert_idを見つける例を取り上げています。
mysql> Create table employee.tbl(Id INT NOT NULL AUTO_INCREMENT, Name Varchar(30) NOT NULL, PRIMARY KEY(id))// Query OK, 0 rows affected (3.87 sec) mysql> Create Procedure insert1() -> BEGIN insert into employee.tbl(name) values ('Ram'); -> END// Query OK, 0 rows affected (0.10 sec)
次に、次のプロシージャinsert2()で、最初のストアドプロシージャ、つまりinsert1()を呼び出します。
mysql> Create Procedure insert2() -> BEGIN -> CALL insert1(); -> Select last_insert_id(); -> END // Query OK, 0 rows affected (0.11 sec) mysql> Delimiter ; mysql> Call insert2(); +------------------+ | last_insert_id() | +------------------+ | 1 | +------------------+ 1 row in set (0.36 sec) Query OK, 0 rows affected (0.37 sec)
上記の結果セットは、insert1()を呼び出すと、employee.tblというテーブルに最初の値を挿入し、2番目のストアドプロシージャ(insert2())でlast_insert_id()を選択すると、出力1が得られることを示しています。
>-
MySQLストアドプロシージャ内でSTARTトランザクションを実行するにはどうすればよいですか?
知っているように、STARTトランザクションはトランザクションを開始し、自動コミットモードをオフに設定します。次の例では、次のデータを持つテーブルemployee.tblに新しいレコードを挿入するSTARTトランザクションを使用してストアドプロシージャを作成しました- mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 |
-
MySQLでselectステートメントを使用してストアドプロシージャを呼び出す方法は?
MySQLでは、FROM句でselectfromプロシージャを使用することはできません。 CALLコマンドを使用すると、その後SELECTステートメントを実行できます。 最初にテーブルを作成しましょう: mysql> create table DemoTable2 -> ( -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> CustomerName varchar(100), -> Shippi