mysql中declare語句用法

2022-02-03 13:19:14 字數 2149 閱讀 1701

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; //  

在過程中定義的變數並不是真正的定義,你只是在begin/end塊內定義了而已(譯註:也就是形參)。注意這些變數和會話變數不一樣,不能使用修飾符@你必須清楚的在begin/end塊中宣告變數和它們的型別。變數一旦宣告,你就能在任何能使用會話變數、文字、列名的地方使用。 

(2)example with no default clause and set statement 

沒有預設子句和設定語句的例子 

create procedure p9 () 

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; //  

有很多初始化變數的方法。如果沒有預設的子句,那麼變數的初始值為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; // 

現在我們來討論一下作用域的問題。例子中有巢狀的begin/end塊,當然這是合法的。同時包含兩個變數,名字都是x1,這樣也是合法的。內部的變數在其作用域內享有更高的優先權。當執行到end語句時,內部變數消失,此時已經在其作用域外,變數不再可見了,因此在儲存過程外再也不能找到這個宣告了的變數,但是你可以通過out引數或者將其值指派 給會話變數來儲存其值。  

呼叫作用域例子的過程: 

mysql> call p11()// 

+-------+ 

| x1 | 

+-------+ 

| inner | 

+-------+ 

+-------+ 

| x1 | 

+-------+ 

| outer | 

+-------+ 

我們看到的結果時第乙個select語句檢索到最內層的變數,第二個檢索到第二層的變數

SQL中declare申明變數

在sql語句中加入變數。declare local variable data type 宣告時須要指定變數的型別,能夠使用set和select對變數進行賦值,在sql語句中就能夠使用 local variable來呼叫變數 宣告中能夠提供值,否則宣告之後全部變數將初始化為null。比如 decla...

SQL中的declare用法

平時寫sql查詢 儲存過程都是憑著感覺來,沒有 過sql的具體語法,一直都是按c 那一套往sql上模仿,前幾天專案中碰到乙個問題引起了我對declare定義變數的作用域的興趣。大家都知道c 中的區域性變數,在if中如果我們定義乙個變數的話他的作用到if結束為止,if外是不識別這個變數的,else裡都...

php中declare的作用詳解

一般用法是 declare ticks n 拿declare ticks 1 來說,這句主要作用有兩種 1 zend引擎每執行1條低階語句就去執行一次 register tick function 註冊的函式。可以粗略的理解為每執行一句php 例如 num 1 就去執行下已經註冊的tick函式。乙個...