mysql存儲過程定義變數
以 DECLARE 關鍵字聲明的變數,只能在存儲過程中使用,稱為存儲過程變數,
例如:
DECLARE var1 INT DEFAULT 0;
主要用在存儲過程中,或者是給存儲傳參數中。
2. MySQL存儲過程中declare和set定義變數的區別
在存儲過程中常看到declare定義的變數和@set定義的變數。簡單的來說,declare定義的類似是局部變數,@set定義的類似全局變數。
1、declare定義的變數類似java類中的局部變數,僅在類中生效。即只在存儲過程中的begin和end之間生效。
2、@set定義的變數,叫做會話變數,也叫用戶定義變數,在整個會話中都起作用(比如某個應用的一個連接過程中),即這個變數可以在被調用的存儲過程或者代碼之間共享數據。如何理解呢?可以看下面這個簡單例子,很好理解。
(1)先執行下面腳本,創建一個存儲過程,分別有declare形式的變數和@set形式的變數
DROP PROCEDURE IF EXISTS temp;
DELIMITER //CREATE PROCEDURE temp()BEGIN
DECLARE a INT DEFAULT 1; SET a=a+1; SET @b=@b+1; SELECT a,@b;END//DELIMITER ;
(2)接著為b變數初始化。
SET @b=1;
(3)然後重復調用這個存儲過程。
CALL temp();
(4)會發現a的值不改變,而b的值會一直增加。
所以,總結起來就是開頭那句話,declare定義的類似是局部變數,@set定義的類似全局變數。
3. 淺談MySQL存儲過程中declare和set定義變數的區別
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;
4. mysql存儲過程中 declare 和 set 定義變數的區別
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;
5. mysql 怎麼定義變數
下面是一個簡單的 存儲過程的例子.
DECLARE v_index INT;
定義一個 名稱為 v_index 的變數, 類型為 INT
MYSQL 變數定義應該只能在 存儲過程, 函數裡面定義.
不像 Oracle / SQL Server , 一個 BEGIN / END 裡面就可以定義/執行了。
mysql> DELIMITER //
mysql> CREATE PROCEDURE TestWhile()
-> BEGIN
-> DECLARE v_index INT;
->
-> SET v_index = 0;
->
-> WHILE v_index < 5 DO
-> SET v_index = v_index + 1;
-> SELECT v_index;
-> END WHILE;
->
-> END//
Query OK, 0 rows affected (0.00 sec)
6. mysql 存儲過程如何聲明變數
DECLARE var_name[,...] type [DEFAULT value]
這個語句被用來聲明局部變數。
要給變數提供一個默認值,請包含一個DEFAULT子句。
值可以被指定為一個表達式,不需要為一個常數。
如果沒有DEFAULT子句,初始值為NULL。
局部變數的作用范圍在它被聲明的BEGIN ... END塊內。
它可以被用在嵌套的塊中,除了那些用相同名字聲明變數的塊。
7. mysql存儲過程中定義變數出錯。
把你的目標表的那個欄位也改成utf-8的
8. MYSQL存儲過程的變數問題。
變數是你自己定義的,你自然知道變數名各是什麼,所以mysql沒有提供「變數列表」這種語法,因為沒有必要。
9. MySQL的存儲過程如何讓列名做變數
假如你的列名是id ,先定義一個變數 p_id 然後把id的值賦值給p_id
p_id :=id;