MySQL declare語句是我們經常用到的語句,下文就為您舉例說明了MySQL declare語句的用法,希望對您學習MySQL declare語句的使用能有所幫助。
MySQL declare語句是在復合語句中聲明變量的指令。
(1)Example with two DECLARE statements
兩個DECLARE語句的實例
- 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 */
在過程中定義的變量並不是真正的定義,你只是在BEGIN/END塊內定義了而已譯注:也就是形參)。注意這些變量和會話變量不一樣,不能使用修飾符@你必須清楚的在BEGIN/END塊中聲明變量和它們的類型。變量一旦聲明,你就能在任何能使用會話變量、文字、列名的地方使用。
(2)Example with no DEFAULT clause and SET statement
沒有默認子句和設定語句的例子
- 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 */
有很多初始化變量的方法。如果沒有默認的子句,那麼變量的初始值為NULL。你可以在任何時候使用SET語句給變量賦值。
(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; //
我們在這裡做了一些改變,但是結果還是一樣的。在這裡使用了DEFAULT子句來設定初始值,這就不需要把DECLARE和SET語句的實現分開了。
(4)Example of CALL
調用的例子
- mysql> CALL p10() //
- +--------+
- | s1 * a |
- +--------+
- | 25 |
- | 25 |
- +--------+
- 2 rows in set (0.00 sec)
- Query OK, 0 rows affected (0.00 sec)
結果顯示了過程能正常工作
(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; //
十大最值得注意的MySQL變量
MySQL系統變量的使用
NULL與MySQL空字符串的區別
深入研究MySQL結果字符串
MySQL截取字符串函數方法