程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> sql存儲過程詳解

sql存儲過程詳解

編輯:關於SqlServer

1,不帶參數的存儲過程

2,帶輸入參數的存儲過程

3,帶輸入和輸出參數的存儲過程

4,帶返回值的存儲過程

不帶參數的存儲過程

例如,以下存儲過程返回Employees表中所有職員的記錄。

存儲過程代碼:

USE TSQLFundamentals2008;
GO

IF OBJECT_ID('usp_ProcDemoNoParam','P') IS NOT NULL DROP PROC usp_ProcDemoNoParam;
GO
-- 1,不帶參數
CREATE PROC usp_ProcDemoNoParam
AS
BEGIN
  SELECT * FROM HR.Employees;
END
GO

調用代碼:

USE TSQLFundamentals2008;
GO

-- 1,不帶參數存儲過程的調用
EXEC usp_ProcDemoNoParam;

結果:

可以看到,共返回了9條記錄。

帶輸入參數的存儲過程

例如,該存儲過程接受輸入參數@empid,然後返回這個職員的信息。

創建存儲過程代碼:

IF OBJECT_ID('usp_ProcDemoWithInputParam','P') IS NOT NULL DROP PROC usp_ProcDemoWithInputParam;
GO
-- 2,帶輸入參數
CREATE PROC usp_ProcDemoWithInputParam
  @empid AS INT
AS
BEGIN
  SELECT * FROM HR.Employees
  WHERE empid= @empid;
END
GO

調用:

-- 2,帶輸入參數存儲過程調用
EXEC usp_ProcDemoWithInputParam @empid=5;

結果:

帶輸入和輸出參數的存儲過程

例如,以下存儲過程接受@empid即職員ID作為輸入參數,然後返回該職員的信息,同時返回代碼受影響行數作為輸出參數。

創建存儲過程代碼:

IF OBJECT_ID('usp_ProcDemoWithInputOutputParam','P') IS NOT NULL DROP PROC usp_ProcDemoWithInputOutputParam;
GO
-- 3,帶輸入和輸出參數
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

調用:

-- 3,帶輸入和輸出參數存儲過程的調用
DECLARE @nums AS INT;
EXEC usp_ProcDemoWithInputOutputParam @empid=5,@NumRowsAffected= @nums OUTPUT;
SELECT @nums AS nums;

結果:

帶返回值的存儲過程

例如,以下存儲過程接受@empid即職員ID作為輸入參數,然後判斷職員表中是否存在該職員的記錄,如果存在則返回1,否則返回0.

創建存儲過程代碼:

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

調用:

-- 4,帶返回值存儲過程的調用
DECLARE @status AS INT=0; --給默認值為0
EXEC @status= dbo.usp_ProcDemoWithReturnValue @empid = 5 -- int
SELECT @status AS thestatus;

結果:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved