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

SQL 存儲過程入門基礎(一):定義、優勢、系統過程、創建調用刪除全流程

     編輯:關於SqlServer

什麼是存儲過程?

存儲過程是一組為完成特定功能的 SQL 語句集,經編譯後存儲在數據庫中。用戶通過名稱+參數調用,數據庫引擎直接執行預編譯計劃。

分類

  • 系統存儲過程:存放於 master 庫,前綴 sp_,封裝系統表查詢,供 DBA 管理實例。
  • 用戶自定義存儲過程:業務邏輯封裝,存放於用戶庫,命名建議 usp_ 或業務前綴。

常用系統存儲過程速查

過程用途
sp_databases列出所有數據庫
sp_tables列出當前庫所有表/視圖
sp_columns 'table'查看表列定義
sp_helpindex 'table'查看索引
sp_helpconstraint 'table'查看約束
sp_stored_procedures列出所有存儲過程
sp_helptext 'sp_name'查看過程定義文本
sp_rename 'old','new'重命名表/列/索引
sp_renamedb 'old','new'重命名數據庫
sp_defaultdb 'login','db'修改登錄默認庫
sp_helpdb / sp_helpdb 'db'數據庫信息總覽/詳情

四大核心優勢

  1. 重用:一次編寫,多處調用,減少重複代碼。
  2. 性能:創建時編譯,執行時復用計劃,省去重複解析優化。
  3. 網絡:一條調用指令替代批量 SQL 文本傳輸,降低延遲與帶佔用。
  4. 安全:參數化防注入;可單獨授權 EXECUTE 權限,不給表直連權限。

創建語法精簡版

CREATE PROC[EDURE] 存儲過程名
    @參數1 數據類型 = 默認值,   -- 輸入參數,可選默認
    @參數2 數據類型 OUTPUT       -- 輸出參數
AS
BEGIN
    SQL語句塊
END
GO

實戰:創建、調用、刪除

1. 創建登錄驗證過程

CREATE PROCEDURE UserLogin
    @name VARCHAR(20),
    @password VARCHAR(20)
AS
BEGIN
    SELECT * FROM userinfo WHERE userName = @name AND userPass = @password;
END
GO

2. 兩種調用方式

-- 位置參數
EXEC UserLogin 'admin', 'admin';

-- 命名參數(推薦,順序無關、可讀性強)
EXEC UserLogin @name='admin', @password='admin';

3. 刪除

DROP PROCEDURE UserLogin;

應用層調用(C# 片段)

using (var conn = new SqlConnection(connStr))
using (var cmd = new SqlCommand("UserLogin", conn))
{
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.AddWithValue("@name", txtUser.Text);
    cmd.Parameters.AddWithValue("@password", txtPwd.Text);
    conn.Open();
    using (var reader = cmd.ExecuteReader())
    {
        if (reader.Read()) { /* 登錄成功 */ }
        else { /* 失敗 */ }
    }
}

小結

存儲過程是數據庫端業務邊界的第一道防線。掌握「創建→參數化調用→權限控制→版本管理」閉環,是從寫 SQL 走向數據庫工程師的必經之路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved