階乗を計算するためのMySQLストアドプロシージャをどのように作成できますか?
mysql> DELIMITER // mysql> CREATE PROCEDURE get_factorial(IN N INT) -> BEGIN -> SET @@GLOBAL.max_sp_recursion_depth = 255; -> SET @@session.max_sp_recursion_depth = 255; -> -> CALL factorial_recursive (N, @factorial); -> -> SELECT @factorial; -> END // Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER // mysql> CREATE PROCEDURE factorial_recursive(IN N INT,OUT factorial INT) -> BEGIN -> IF N = 1 THEN -> SET factorial := 1; -> ELSE -> CALL factorial_recursive (N-1, factorial); -> SET factorial := N * factorial; -> END IF; -> END // Query OK, 0 rows affected (0.00 sec) mysql> DELIMITER ; mysql> Call get_factorial(10); +--------------+ | @factorial | +--------------+ | 3628800 | +--------------+ 1 row in set (0.11 sec) Query OK, 0 rows affected (0.12 sec) mysql> Call get_factorial(5); +-------------+ | @factorial | +-------------+ | 120 | +-------------+ 1 row in set (0.00 sec) Query OK, 0 rows affected (0.00 sec)
-
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 Proced
-
特定のMySQLストアド関数のソースコードをどのように確認できますか?
SHOW CREATE FUNCTIONステートメントを使用すると、ストアド関数のソースコードを確認できます。わかりやすくするために、クエリでHello()という名前のストアド関数を次のように使用しています- mysql> SHOW CREATE FUNCTION Hello\G *************************** 1. row *************************** Function: Hello