當前位置:首頁 » 存儲配置 » mysql存儲過程表變數

mysql存儲過程表變數

發布時間: 2022-06-17 04:50:18

❶ 在Mysql中如何創建一個帶輸出參數為一個表類型的存儲過程

在MySQL中如何創建一個帶輸出參數為一個表類型的存儲過程
首先需要知道「另一個存儲過程」的結果集的所有列的類型。
假設「另一個存儲過程」的名字是sp1,沒有參數,返回的結果集共3列,全部為int型,那麼「存儲過程」里添加一個與結果集列數相同的臨時表或表變數用於接收「另一個存儲過程」的結果集
如下
CREATE PROCEDURE sp2
AS
DECLARE @t table(a int,b int,c int)

INSERT INTO @t(a,b,c)
EXEC sp1

SELECT * FROM @t
使用SQLSERVER存儲過程可以很大的提高程序運行速度,簡化編程維護難度,現已得到廣泛應用。
創建存儲過程
和數據表一樣,在使用之前需要創建存儲過程,它的簡明語法是:

引用:
Create PROC 存儲過程名稱
[參數列表(多個以「,」分隔)]
AS
SQL 語句

例:

引用:
Create PROC upGetUserName
@intUserId INT,
@ostrUserName NVARCHAR(20) OUTPUT -- 要輸出的參數
AS
BEGIN
-- 將uName的值賦給 @ostrUserName 變數,即要輸出的參數
Select @ostrUserName=uName FROM uUser Where uId=@intUserId
END

其中 Create PROC 語句(完整語句為Create PROCEDURE)的意思就是告訴SQL SERVER,現在需要建立一個存儲過程,upGetUserName 就是存儲過程名稱,@intUserId 和 @ostrUserName 分別是該存儲過程的兩個參數,注意,在SQL SERVER中,所有用戶定義的變數都以「@」開頭,OUTPUT關鍵字表示這個參數是用來輸出的,AS之後就是存儲過程內容了。只要將以上代碼在「查詢分析器」里執行一次,SQL SERVER就會在當前資料庫中創建一個名為「upGetUserName」的存儲過程。你可以打開「企業管理器」,選擇當前操作的資料庫,然後在左邊的樹型列表中選擇「存儲過程」,此時就可以在右邊的列表中看到你剛剛創建的存儲過程了(如果沒有,刷新一下即可)。
二、存儲過程的調用

之前已經創建了一個名為「upGetUserName」的存儲過程,從字面理解該存儲過程的功能是用來取得某一個用戶的名稱。存儲過程建立好了,接下來就是要在應用程序里調用了,下面看一下在ASP程序里的調用。

❷ mysql 存儲過程 變數值類型有哪些

SQL Server存儲過程是SQL資料庫的重要組成部分,其中可以用到許多參數。在SQL Server存儲過程中,支持輸入(Input)、輸出參數(Output),也支持返回值參數(ReturnValue)。

❸ mysql存儲過程函數怎麼定義變數

以 DECLARE 關鍵字聲明的變數,只能在存儲過程中使用,稱為存儲過程變數,
例如:
DECLARE var1 INT DEFAULT 0;
主要用在存儲過程中,或者是給存儲傳參數中。

❹ mysql存儲過程在游標中怎麼使用變數作為表明

(1)CONCAT()//字元連接
(2)CONCAT_WS()//使用指定的分隔符進行字元連接
(3)FORMAT()//數字格式化
(4)LOWER()//轉化小寫
(5)UPPER()//轉換大寫
(6)LEFT()//獲取左側字元
(7)RIGHT()//獲取右側字元
(8)LENGTH()//取得字元串長度
(9)LTRIM(),RTRIM(),TRIM()//刪除前導、後續空格或者指定字元
(10)REPLACE()//替換
(11)SUBSTRING()//字元串截取
(12)[NOT] LIKE//模式匹配——百分號%代表任意個字元;下劃線_代表任意一個字元

❺ 淺談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定義的類似全局變數。

❻ mysql存儲過程輸入一個變數新建一個該變數的列表名

一般沒有這種做法的, 列表名或者說欄位名都是在設計表的時候固定設計好了, 如果動態添加的話指不定什麼時候表就因為欄位太多出現什麼不可預測的問題了來
不過一般你可以變相使用行做動態數據, 例如設計一個表, 欄位有id(自增), field_name(存儲列表名), filed_value(存儲列表值), 達成同樣的目的
到時候只要插入相應的行數據就可以了, 而不必改變表結構

❼ mysql資料庫中存儲過程如何處理變數

用select...into語句。
這個SELECT語法把選定的列直接存儲到變數。因此,只有單一的行可以被取回。
重要:
SQL變數名不能和列名一樣。如果SELECT ... INTO這樣的SQL語句包含一個對列的參考,並包含一個與列相同名字的局部變數,MySQL當前把參考解釋為一個變數的名字。例如,在下面的語句中,xname 被解釋為到xname variable 的參考而不是到xname column的:

CREATE PROCEDURE sp1 (x VARCHAR(5)) BEGIN DECLARE xname VARCHAR(5) DEFAULT 'bob'; DECLARE newname VARCHAR(5); DECLARE xid INT; SELECT xname,id INTO newname,xid FROM table1 WHERE xname = xname; SELECT newname; END;

當這個程序被調用的時候,無論table.xname列的值是什麼,變數newname將返回值『bob』。

❽ MYSQL存儲過程的變數問題。

變數是你自己定義的,你自然知道變數名各是什麼,所以mysql沒有提供「變數列表」這種語法,因為沒有必要。

❾ MYSQL中使用存儲過程中,變數怎麼使用

create procere p
@a char(15)
as
begin
insert into @a (name)
values ('zhangsan')
end

❿ MySQL存儲過程里怎麼定義一個參數類型和表的變數類型一樣

MySQL存儲過程中,定義變數有兩種方式:
  1、使用set或select直接賦值,變數名以@開頭,可以在一個會話(即連接)的任何地方聲明,作用域是整個會話,稱為用戶變數。例如:set @var=1;
  2、 以declare關鍵字聲明的變數,只能在存儲過程中使用,稱為存儲過程變數,主要用在存儲過程中,或者是給存儲傳參數中。例如: declare var1 int default 0;

兩者的區別是:
    在調用存儲過程時,以declare聲明的變數都會被初始化為null。而會話變數(即@開頭的變數)則不會被再初始化,在一個會話(連接)內,只須初始化一次,之後在會話內都是對上一次計算的結果,就相當於在是這個會話內的全局變數。

熱點內容
安卓耳機接頭叫什麼 發布:2025-03-28 20:18:29 瀏覽:735
uc瀏覽器緩存視頻在哪裡 發布:2025-03-28 20:17:37 瀏覽:927
挖蜂巢解壓 發布:2025-03-28 20:12:17 瀏覽:276
陌陌的自定義密碼是多少 發布:2025-03-28 20:11:27 瀏覽:692
mfc創建文件夾 發布:2025-03-28 20:09:47 瀏覽:70
活體細胞編程 發布:2025-03-28 20:09:45 瀏覽:757
sdk存儲 發布:2025-03-28 19:50:44 瀏覽:947
手機壓縮視頻怎麼壓縮 發布:2025-03-28 19:49:58 瀏覽:950
超級訪問李宇春 發布:2025-03-28 19:49:48 瀏覽:226
高訪問攻擊 發布:2025-03-28 19:47:24 瀏覽:10