mysql儲存過程中,定義變數有兩種方式:
1.使用set或select直接賦值,變數名以 @ 開頭.
例如:set @var=1;
可以在乙個會話的任何地方宣告,作用域是整個會話,稱為會話變數。
2.以 declare 關鍵字宣告的變數,只能在儲存過程中使用,稱為儲存過程變數,例如:
declare var1 int default 0;
主要用在儲存過程中,或者是給儲存傳引數中。
兩者的區別是:
在呼叫儲存過程時,以declare宣告的變數都會被初始化為 null。而會話變數(即@開頭的變數)則不會被再初始化,在乙個會話內,只須初始化一次,之後在會話內都是對上一次計算的結果,就相當於在是這個會話內的全域性變數。
在儲存過程中,使用動態語句,預處理時,動態內容必須賦給乙個會話變數。
例:set @v_sql= sqltext;
prepare stmt from @v_sql;
execute stmt;
deallocate prepare stmt;
變數可以在子程式(函式、儲存過程、匿名塊)中宣告並使用,這些變數的作用範圍是在begin...end程式中。
declare var_name [, var_name
]... data_type [
default value
];
var_name為區域性變數的名稱;
default value子句指定指定變數的預設值,value除了可以被宣告為乙個常量外,還可以被指定為乙個表示式。如果沒有default子句,變數的初始值為null。
declare myparam intdefault
100;
定義變數以後,為變數賦值可以改變變數的預設值。mysql中使用set語句為變數賦值。
在儲存程式中的set語句是一般set語句的擴充套件版本。被參考變數可能是子程式內宣告的變數,或者是全域性伺服器變數,如系統變數或者使用者變數。
set var_name=expr [, var_name=expr
]...;
宣告3個變數,分別為var1, var2和var3,資料型別為int,使用set為變數賦值
declare var1, var2, var3 int; set var1=
10, var2=
20;
set var3=var1+var2;
select into語法把選定的列直接儲存到對應位置的變數。
mysql中還可以通過select...into為乙個或者多個變數賦值,語法如下:
selectcol_name
[,...
]into var_name[
,...
] table_expr [
where...
];
宣告變數v_employee_name和v_employee_salary,通過select...into語句查詢指定記錄並為變數賦值:
declare v_employee_name varchar(100);
declare v_employee_salary decimal(8,4
);
select
employee_name, employee_salary
into
v_employee_name, v_employee_salary
from
employees
where employee_id=
1;
shell 變數定義 變數賦值
在 shell 中,當第一次使用某變數名時,實際上就定義了這個變數。建立和設定變數的語法 varname varvalue如果沒有給出變數值,則變數會被賦予乙個空字串。注意,在賦值操作符 的周圍不要有任何空格,像下面這三種寫法會報錯 varname varvalue varname varvalue...
MySql 儲存過程 變數的定義和賦值
mysql 5.0 版本開始支援儲存過程。儲存過程 stored procedure 是一種在資料庫中儲存複雜程式,以便外部程式呼叫的一種資料庫物件。儲存過程是為了完成特定功能的sql語句集,經編譯建立並儲存在資料庫中,使用者可通過指定儲存過程的名字並給定引數 需要時 來呼叫執行。declare v...
mysql變數賦值
mysql中變數不用事前申明,在用的時候直接用 變數名 使用就可以了。第一種用法 set num 1 或set num 1 這裡要使用變數來儲存資料,直接使用 num變數 第二種用法 select num 1 或 select num 欄位名 from 表名 where 注意上面兩種賦值符號,使用s...