MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLストアドプロシージャでローカル変数をどのように使用できますか?


ローカル変数は、ストアドプロシージャ内で宣言される変数です。これらは、宣言されているBEGIN…ENDブロック内でのみ有効であり、任意のSQLデータ型を持つことができます。それを実証するために、次の手順を作成しています-

mysql> DELIMITER // ;
mysql> Create Procedure Proc_Localvariables()
   -> BEGIN
   -> DECLARE X INT DEFAULT 100;
   -> DECLARE Y INT;
   -> DECLARE Z INT;
   -> DECLARE A INT;
   -> SET Y = 250;
   -> SET Z = 200;
   -> SET A = X+Y+Z;
   -> SELECT X,Y,Z,A;
   -> END //
Query OK, 0 rows affected (0.00 sec)

mysql> Delimiter ; //
mysql> CALL Proc_Localvariables();
+------+------+------+------+
| X    | Y    | Z    | A    |
+------+------+------+------+
| 100  | 250  | 200  | 550  |
+------+------+------+------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

  1. MySQLストアドプロシージャ内でSTARTトランザクションを実行するにはどうすればよいですか?

    知っているように、STARTトランザクションはトランザクションを開始し、自動コミットモードをオフに設定します。次の例では、次のデータを持つテーブルemployee.tblに新しいレコードを挿入するSTARTトランザクションを使用してストアドプロシージャを作成しました- mysql> Select * from employee.tbl; +----+---------+ | Id | Name    | +----+---------+ | 1  | Mohan   | | 2  | Gaurav  | | 3  |

  2. 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