MySQL declare語(yǔ)句用法介紹
MySQL declare語(yǔ)句是我們經(jīng)常用到的語(yǔ)句,下文就為您舉例說(shuō)明了MySQL declare語(yǔ)句的用法,希望對(duì)您學(xué)習(xí)MySQL declare語(yǔ)句的使用能有所幫助。
MySQL declare語(yǔ)句是在復(fù)合語(yǔ)句中聲明變量的指令。
(1)Example with two DECLARE statements
兩個(gè)DECLARE語(yǔ)句的實(shí)例
- CREATE PROCEDURE p8 ()
- BEGIN
- DECLARE a INT;
- DECLARE b INT;
- SET a = 5;
- SET b = 5;
- INSERT INTO t VALUES (a);
- SELECT s1 * a FROM t WHERE s1 >= b;
- END; // /* I won't CALL this */
在過(guò)程中定義的變量并不是真正的定義,你只是在BEGIN/END塊內(nèi)定義了而已(譯注:也就是形參)。注意這些變量和會(huì)話(huà)變量不一樣,不能使用修飾符@你必須清楚的在BEGIN/END塊中聲明變量和它們的類(lèi)型。變量一旦聲明,你就能在任何能使用會(huì)話(huà)變量、文字、列名的地方使用。
(2)Example with no DEFAULT clause and SET statement
沒(méi)有默認(rèn)子句和設(shè)定語(yǔ)句的例子
- CREATE PROCEDURE p9 ()
- BEGIN
- DECLARE a INT /* there is no DEFAULT clause */;
- DECLARE b INT /* there is no DEFAULT clause */;
- SET a = 5; /* there is a SET statement */
- SET b = 5; /* there is a SET statement */
- INSERT INTO t VALUES (a);
- SELECT s1 * a FROM t WHERE s1 >= b;
- END; // /* I won't CALL this */
有很多初始化變量的方法。如果沒(méi)有默認(rèn)的子句,那么變量的初始值為NULL。你可以在任何時(shí)候使用SET語(yǔ)句給變量賦值。
(3)Example with DEFAULT clause
含有DEFAULT子句的例子
- CREATE PROCEDURE p10 ()
- BEGIN
- DECLARE a, b INT DEFAULT 5;
- INSERT INTO t VALUES (a);
- SELECT s1 * a FROM t WHERE s1 >= b;
- END; //
我們?cè)谶@里做了一些改變,但是結(jié)果還是一樣的。在這里使用了DEFAULT子句來(lái)設(shè)定初始值,這就不需要把DECLARE和SET語(yǔ)句的實(shí)現(xiàn)分開(kāi)了?!?/p>
(4)Example of CALL
調(diào)用的例子
- mysql> CALL p10() //
- +--------+
- | s1 * a |
- +--------+
- | 25 |
- | 25 |
- +--------+
- 2 rows in set (0.00 sec)
- Query OK, 0 rows affected (0.00 sec)
結(jié)果顯示了過(guò)程能正常工作
(5) Scope
作用域
- CREATE PROCEDURE p11 ()
- BEGIN
- DECLARE x1 CHAR(5) DEFAULT 'outer';
- BEGIN
- DECLARE x1 CHAR(5) DEFAULT 'inner';
- SELECT x1;
- END;
- SELECT x1;
- END; //
【編輯推薦】