首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL 預存程序入門:建立、參數、回傳值與實戰範例

     編輯:關於SqlServer

基本語法

CREATE PROCEDURE 程序名
  [@參數 資料型別] [OUTPUT]
  [WITH {RECOMPILE | ENCRYPTION}]
AS
  SQL_陳述式
  • OUTPUT:標記可回傳的輸出參數
  • RECOMPILE:每次執行重新編譯
  • ENCRYPTION:加密程序定義

三種回傳值機制

實戰範例 1:查詢書籍表

CREATE PROC query_book
AS
  SELECT * FROM book
GO
EXEC query_book

實戰範例 2:新增書籍並回傳總金額

CREATE PROC insert_book
  @param1 CHAR(10), @param2 VARCHAR(20), @param3 MONEY, @param4 MONEY OUTPUT
WITH ENCRYPTION
AS
  INSERT INTO book(編號, 書名, 價格) VALUES (@param1, @param2, @param3)
  SELECT @param4 = SUM(價格) FROM book
GO

-- 執行範例
DECLARE @total_price MONEY
EXEC insert_book '003', 'Delphi 控件開發指南', 100, @total_price OUTPUT
PRINT '總金額為 ' + CONVERT(VARCHAR, @total_price)

實戰範例 3:跨表聯結建立暫存表

CREATE PROC temp_sale
AS
  SELECT a.產品編號, a.產品名稱, b.客戶名, b.客戶訂金,
         a.客戶訂數 * b.客戶訂金 AS 總金額
  INTO #temptable
  FROM Product a INNER JOIN [Order] b ON a.產品編號 = b.產品編號

  IF @@ERROR = 0 PRINT 'Good' ELSE PRINT 'Fail'
GO

關鍵觀念

  • 暫存表 #temptable 僅存在於目前 Session,程序結束自動清除
  • 善用 @@ERROR 捕捉執行狀態
  • 加密與重新編譯選項依安全與效能需求啟用

掌握以上範例,即能獨立撰寫具備參數傳遞、錯誤處理與資料加工能力的預存程序。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類型說明接收方式
RETURN回傳整數狀態碼批次變數接收
OUTPUT 參數回傳任意型別值批次變數接收
Recordset回傳查詢結果集用戶端接收