sql存儲過程詳解
1,不帶參數(shù)的存儲過程
2,帶輸入?yún)?shù)的存儲過程
3,帶輸入和輸出參數(shù)的存儲過程
4,帶返回值的存儲過程
不帶參數(shù)的存儲過程
例如,以下存儲過程返回Employees表中所有職員的記錄。
存儲過程代碼:
USE TSQLFundamentals2008;
GO
IF OBJECT_ID('usp_ProcDemoNoParam','P') IS NOT NULL DROP PROC usp_ProcDemoNoParam;
GO
-- 1,不帶參數(shù)
CREATE PROC usp_ProcDemoNoParam
AS
BEGIN
SELECT * FROM HR.Employees;
END
GO
調(diào)用代碼:
USE TSQLFundamentals2008; GO -- 1,不帶參數(shù)存儲過程的調(diào)用 EXEC usp_ProcDemoNoParam;
結(jié)果:

可以看到,共返回了9條記錄。
帶輸入?yún)?shù)的存儲過程
例如,該存儲過程接受輸入?yún)?shù)@empid,然后返回這個職員的信息。
創(chuàng)建存儲過程代碼:
IF OBJECT_ID('usp_ProcDemoWithInputParam','P') IS NOT NULL DROP PROC usp_ProcDemoWithInputParam;
GO
-- 2,帶輸入?yún)?shù)
CREATE PROC usp_ProcDemoWithInputParam
@empid AS INT
AS
BEGIN
SELECT * FROM HR.Employees
WHERE empid= @empid;
END
GO
調(diào)用:
-- 2,帶輸入?yún)?shù)存儲過程調(diào)用 EXEC usp_ProcDemoWithInputParam @empid=5;
結(jié)果:

帶輸入和輸出參數(shù)的存儲過程
例如,以下存儲過程接受@empid即職員ID作為輸入?yún)?shù),然后返回該職員的信息,同時返回代碼受影響行數(shù)作為輸出參數(shù)。
創(chuàng)建存儲過程代碼:
IF OBJECT_ID('usp_ProcDemoWithInputOutputParam','P') IS NOT NULL DROP PROC usp_ProcDemoWithInputOutputParam;
GO
-- 3,帶輸入和輸出參數(shù)
CREATE PROC usp_ProcDemoWithInputOutputParam
@empid AS INT,
@NumRowsAffected AS INT OUTPUT
AS
BEGIN
SELECT * FROM HR.Employees
WHERE empid= @empid;
SET @NumRowsAffected= @@ROWCOUNT; -- 賦值,也可以使用select賦值
END
GO
調(diào)用:
-- 3,帶輸入和輸出參數(shù)存儲過程的調(diào)用 DECLARE @nums AS INT; EXEC usp_ProcDemoWithInputOutputParam @empid=5,@NumRowsAffected= @nums OUTPUT; SELECT @nums AS nums;
結(jié)果:

帶返回值的存儲過程
例如,以下存儲過程接受@empid即職員ID作為輸入?yún)?shù),然后判斷職員表中是否存在該職員的記錄,如果存在則返回1,否則返回0.
創(chuàng)建存儲過程代碼:
IF OBJECT_ID('usp_ProcDemoWithReturnValue','P') IS NOT NULL DROP PROC usp_ProcDemoWithReturnValue;
GO
-- 4,帶返回值
CREATE PROC usp_ProcDemoWithReturnValue
@empid AS INT
AS
BEGIN
IF EXISTS (SELECT * FROM HR.Employees WHERE empid=@empid)
RETURN 1
ELSE
RETURN 0; -- 也可以聲明一個變量,然后返回這個變量
END
GO
調(diào)用:
-- 4,帶返回值存儲過程的調(diào)用 DECLARE @status AS INT=0; --給默認值為0 EXEC @status= dbo.usp_ProcDemoWithReturnValue @empid = 5 -- int SELECT @status AS thestatus;
結(jié)果:

- Sql Server中的用戶名和登錄名
- MSSQL監(jiān)控數(shù)據(jù)庫的DDL操作(創(chuàng)建,修改,刪除存儲過程,創(chuàng)建,修改,刪除表等)
- PHP得到mssql的存儲過程的輸出參數(shù)功能實現(xiàn)
- MSSQL MySQL 數(shù)據(jù)庫分頁(存儲過程)
- mssql存儲過程表名和字段名為變量的實現(xiàn)方法
- MSSQL存儲過程學(xué)習(xí)筆記一 關(guān)于存儲過程
- 實例學(xué)習(xí)mssql存儲過程分析
- MySQL 存儲過程中執(zhí)行動態(tài)SQL語句的方法
- sqlserver存儲過程語法詳解
- MSSQL事務(wù)的存儲過程
相關(guān)文章
SQLServer2000 報1053錯誤(服務(wù)沒有及時響應(yīng)或控制請求)的解決方法
發(fā)生錯誤 1053-(服務(wù)沒有及時響應(yīng)或控制請求。),此時正在 MSSQLServer 服務(wù)上執(zhí)行該服務(wù)操作。我立即上網(wǎng)查找相關(guān)信息,看見有人說是更改windows用戶密碼后便出現(xiàn)此類問題,但說得都不是很明白,所以自己想總結(jié)一下2013-06-06
SQL Server游標的使用/關(guān)閉/釋放/優(yōu)化小結(jié)
游標打破了這一查詢的思考是面向集合的規(guī)則,游標使得我們思考方式變?yōu)橹鹦羞M行,接下來為大家介紹下游標的使用感興趣的朋友可以參考下哈,希望可以幫助到你2013-03-03
動態(tài)給表添加刪除字段并同時修改它的插入更新存儲過程
有一個表,用戶需要在后臺操作它,希望能對它動態(tài)進行添加刪除字段2011-11-11
SqlServer使用 case when 解決多條件模糊查詢問題
這篇文章主要介紹了SqlServer使用 case when 解決多條件模糊查詢問題 的相關(guān)資料,需要的朋友可以參考下2015-12-12
SQL SERVER 2014 安裝圖解教程(含SQL SERVER 2014下載)
這篇文章主要介紹了SQL SERVER 2014 安裝圖解教程(含SQL SERVER 2014下載),需要的朋友可以參考下2015-10-10
Sqlserver 自定義函數(shù) Function使用介紹
這篇文章主要介紹了Sqlserver 自定義函數(shù) Function使用介紹,在sqlserver2008中有3中自定義函數(shù):標量函數(shù)/內(nèi)聯(lián)表值函數(shù)/多語句表值函數(shù),需要的朋友可以參考下2016-10-10
SQL Server清除日志文件ERRORLOG和刪除tempdb.mdf
數(shù)據(jù)庫再使用一段時間后,日志文件會增大,特別是在磁盤容量不足的情況下,更是需要縮減,以下為縮減方法:如果可以停止 SQL Server 服務(wù),那么可以采取更直接的方式來縮減 ERRORLOG 和 tempdb.mdf 文件的大小,2025-03-03

