存儲過程中定義變數
1. Mysql存儲過程里怎麼定義一個參數類型和表的變數類型一樣
MySQL存儲過程中,定義變數有兩種方式:
1、使用set或select直接賦值,變數名以@開頭,可以在一個會話(即連接)的任何地方聲明,作用域是整個會話,稱為用戶變數。例如:set @var=1;
2、 以declare關鍵字聲明的變數,只能在存儲過程中使用,稱為存儲過程變數,主要用在存儲過程中,或者是給存儲傳參數中。例如: declare var1 int default 0;
兩者的區別是:
在調用存儲過程時,以declare聲明的變數都會被初始化為null。而會話變數(即@開頭的變數)則不會被再初始化,在一個會話(連接)內,只須初始化一次,之後在會話內都是對上一次計算的結果,就相當於在是這個會話內的全局變數。
2. mysql存儲過程函數怎麼定義變數
以 DECLARE 關鍵字聲明的變數,只能在存儲過程中使用,稱為存儲過程變數,
例如:
DECLARE var1 INT DEFAULT 0;
主要用在存儲過程中,或者是給存儲傳參數中。
3. 存儲過程中如何定義一個變數
create proc 存儲過程名字
@參數名 類型,
........
as
declare @變數名 類型
set @變數名=。。。。。賦值
4. SQL存儲過程可以定義表變數嗎
這樣不行吧。
可以這樣間接部分實現這種功能:
ALTER PROCEDURE dbo.StoredProcere1
@tpye int
AS
if @tpye =1
select * from table1
else if @tpye =2
select * from table1
……
5. 存儲過程中如何定義一個變數
存儲過程常見的變數:局部變數、用戶變數、系統變數
6. 存儲過程的變數指什麼
存儲過程是面向對象的資料庫編程語言,與其他面向對象編程語言類似,可聲明變數,用變數來存取某一類值,變數在存儲過程中佔有非常重要的位置。變數聲明在MySQL語言的存儲過程中,變數有會話變數、存儲過程變數兩種。兩種變數的聲明方式不同,作用場景也不盡相同,在實際使用中要根據需要加以選擇。
1.變數種類((1)會話變數會話變數也稱用戶變數,可以在一個客戶端會話的任何地方聲明,作用域是整個會話,會話斷開後,會話變數也就消失。會話變數名以@開頭,使用set直接賦值,在一個會話內,會話變數只需初始化一次。
例如,Set@num=1;表示聲明了一個名字叫「@num」的會話變數,其初始值為1。
(2)存儲過程變數存儲過程變數以DECLARE為關鍵字聲明的變數,只能在存儲過程中使用,其命名不需要以@開頭。以DECLARE聲明的變數都會被初始化為NULL,存儲過程變數存在於資料庫伺服器上。2.變數定義存儲過程變數定義格式:DECLARE+變數名+數據類型+[DEFAULTVALUE]其中,((1)DECLARE為聲明存儲過程變數的關鍵字;
(2)變數名可以任意,但盡可能達到能表意的目的;
(3)數據類型為MySQL的數據類型,如int
7. 存儲過程中的變數問題(PL/SQL)
一樓回答正確,另外再說一個簡單點的:
for
rec
--(rec是游標名,可以自己定義)
in
(select
*
from
temp1)
loop
後用到temp1的哪些信息就取rec的相應信息就行.
結束時用
end
loop;(循環結束)
8. 淺談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;
9. 淺談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定義的類似全局變數。
10. MySQL存儲過程中declare和set定義變數的區別
declare定義的變數類似java類中的局部變數,僅在類中生效。即只在存儲過程中的begin和end之間生效。
set定義的變數,叫做會話變數,也叫用戶定義變數,在整個會話中都起作用(比如某個應用的一個連接過程中),即這個變數可以在被調用的存儲過程或者代碼之間共享數據。