如何創(chuàng)建MySQL存儲過程可以返回一個表類型的數(shù)據

公司主營業(yè)務:網站設計制作、成都網站設計、移動網站開發(fā)等業(yè)務。幫助企業(yè)客戶真正實現(xiàn)互聯(lián)網宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚、勤奮敬業(yè)、活力青春激揚、勤奮敬業(yè)、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰(zhàn),讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出會寧免費做網站回饋大家。
首先需要知道“另一個存儲過程”的結果集的所有列的類型。
假設“另一個存儲過程”的名字是sp1,沒有參數(shù),返回的結果集共3列,全部為int型,那么“存儲過程”里添加一個與結果集列數(shù)相同的臨時表或表變量用于接收“另一個存儲過程”的結果集
如下
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存儲過程可以很大的提高程序運行速度,簡化編程維護難度,現(xiàn)已得到廣泛應用。
創(chuàng)建存儲過程
和數(shù)據表一樣,在使用之前需要創(chuàng)建存儲過程,它的簡明語法是:
引用:
Create PROC 存儲過程名稱
[參數(shù)列表(多個以“,”分隔)]
AS
SQL 語句
例:
引用:
Create PROC upGetUserName
@intUserId INT,
@ostrUserName NVARCHAR(20) OUTPUT -- 要輸出的參數(shù)
AS
BEGIN
-- 將uName的值賦給 @ostrUserName 變量,即要輸出的參數(shù)
Select @ostrUserName=uName FROM uUser Where uId=@intUserId
END
其中 Create PROC 語句(完整語句為Create PROCEDURE)的意思就是告訴SQL SERVER,現(xiàn)在需要建立一個存儲過程,upGetUserName 就是存儲過程名稱,@intUserId 和 @ostrUserName 分別是該存儲過程的兩個參數(shù),注意,在SQL SERVER中,所有用戶定義的變量都以“@”開頭,OUTPUT關鍵字表示這個參數(shù)是用來輸出的,AS之后就是存儲過程內容了。只要將以上代碼在“查詢分析器”里執(zhí)行一次,SQL SERVER就會在當前數(shù)據庫中創(chuàng)建一個名為“upGetUserName”的存儲過程。你可以打開“企業(yè)管理器”,選擇當前操作的數(shù)據庫,然后在左邊的樹型列表中選擇“存儲過程”,此時就可以在右邊的列表中看到你剛剛創(chuàng)建的存儲過程了(如果沒有,刷新一下即可)。
二、存儲過程的調用
之前已經創(chuàng)建了一個名為“upGetUserName”的存儲過程,從字面理解該存儲過程的功能是用來取得某一個用戶的名稱。存儲過程建立好了,接下來就是要在應用程序里調用了,下面看一下在ASP程序里的調用。
打開SQL server management studio,連接到數(shù)據庫,展開想要創(chuàng)建的數(shù)據庫,找到【可編程性】-【存儲過程】的菜單
請點擊輸入圖片描述
在第一步找到的【存儲過程】菜單項上面,點擊鼠標右鍵,依次選擇【新建】-【存儲過程】,就可以開始創(chuàng)建存儲過程了
請點擊輸入圖片描述
當點擊了第二步的【存儲過程】之后,在右側就會出現(xiàn)一個新的窗口,而且默認有好多的代碼和注釋,這些就是sqlserver默認創(chuàng)建的存儲過程的結構和注釋
請點擊輸入圖片描述
對于第三步看到的存儲過程結構,因為是英文的,可能看著比較吃力。本文特意做了一個中文的翻譯對照版本,同時增加了一下設置項的解釋。
1)SET ANSI_NULLS ON:意思是空值NULL在匹配NULL條件的時候返回false,這種判斷null就需要使用 is null 或者 is not null
2)SET ANSI_NULLS OFF:意思是空值NULL在匹配NULL條件的時候返回true
3)SET QUOTED_IDENTIFIER ON:意思是如果內容與sqlserver的關鍵字相同,允許通過加雙引號、單引號的方式加以區(qū)分
4)SET QUOTED_IDENTIFIER OFF:意思是與sqlserver的關鍵字相同的,不允許加雙引號,也就是自定義的不允許與關鍵字重復
5)SET NOCOUNT ON:意思是不返回影響的行數(shù)
6)SET NOCOUNT OFF:意思是要返回影響的行數(shù)
請點擊輸入圖片描述
此處僅僅創(chuàng)建一個簡單的演示存儲過程,名字叫做usp_SimpleStoreProcedure,擁有一個整型的傳入參數(shù) @x,存儲過程直接返回傳入參數(shù)乘以10倍的結果。寫完存儲過程之后,按F5就可以將其存儲到數(shù)據庫中
請點擊輸入圖片描述
在第二步中找到的【存儲過程】菜單下面找到第5步創(chuàng)建的存儲過程名字usp_SimpleStoreProcedure,在這個名字上面點擊鼠標右鍵,選擇【執(zhí)行存儲過程】
請點擊輸入圖片描述
緊接著,會彈出一個【執(zhí)行過程】的界面,里面有存儲過程的參數(shù),在【值】這一列輸入想要傳入的參數(shù)值,比如10,然后點擊【確定】按鈕,就可以看到執(zhí)行結果100了。
注意:假設是使用sql語句執(zhí)行存儲過程,直接使用這樣的語句就行了: EXEC [dbo].[usp_SimpleStoreProcedure] @x = 10
請點擊輸入圖片描述
基本語法如下
create?proc?name--------------創(chuàng)建存儲過程?'name'?為存儲過程的名稱
@變數(shù)?varchar(20)---------------定義變數(shù)??和它的類型
as
--------------------------------------------你要寫的select?或者其他的sql?語句
sqlserver里調用存儲過程的具體操作步驟如下:
1、打開SQL Server Managment管理工具,新建一個表。
2、然后在表中插入一些樣例數(shù)據。
3、接下來在SQL Server Managment中右鍵單擊可編程性,選擇新建存儲過程。
4、然后在SQL編寫界面中編寫SQL語句,注意這里的@name就是接收的輸入參數(shù)。
5、編寫好存儲過程,執(zhí)行一下,就會在可編程性下面找到創(chuàng)建的存儲過程。
6、緊接著,會彈出一個【執(zhí)行過程】的界面,里面有存儲過程的參數(shù),在【值】這一列輸入想要傳入的參數(shù)值,比如10,然后點擊【確定】按鈕,就可以看到執(zhí)行結果100了。
create procedure prCreateSubPlan
as
begin
declare @id int,
@intCycle int,
@planName varchar(100),
@createTime smalldatetime,
@cycleTime int
select @id = min(t_cplan_id) from t_cplan
while (@id is not null)
begin
select @planName=t_plan_name, @createTime = createTime, @cycleTime = cycleTime from t_cplan where t_cplan_id=@id
select @intCycle= 0
while (@intCycle@cycleTime)
begin
-- 表t_plan 列t_plan_id是IDENTITY 列
insert t_plan (t_plan_name, t_cplan_id, createTime)
values (@planName, @id, dateadd(day, @intCycle, @createTime))
select @intCycle = @intCycle + 1
end
select @id = min(t_cplan_id) from t_cplan where t_cplan_id@id
end
end
go
sqlserver存儲過程的基本操作:
一、創(chuàng)建存儲過程
1、語法格式:
create proc | procedure pro_name
[{@參數(shù)數(shù)據類型} [=默認值] [output],
{@參數(shù)數(shù)據類型} [=默認值] [output],
....
]
as
SQL_statements
以上是最基本語法,舉個簡單的例子:
CREATE proc p_test
as
select retu = 12、執(zhí)行存儲過程
EXECUTE Procedure_name '' --存儲過程如果有參數(shù),后面加參數(shù)格式為:@參數(shù)名=value,也可直接為參數(shù)值value
3、刪除存儲過程
drop procedure procedure_name --在存儲過程中能調用另外一個存儲過程,而不能刪除另外一個存儲過程
網站名稱:sqlserver創(chuàng)建存儲過程,SQLserver創(chuàng)建存儲過程語句
文章網址:http://chinadenli.net/article38/dsihesp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供響應式網站、全網營銷推廣、網站策劃、用戶體驗、微信小程序、靜態(tài)網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)