SQL Server儲存過程多角度介紹
什麼是儲存過程:
儲存過程(Procedure)類似於C#語言中的方法,它是SQL語句和控制流語句的預編譯集合。儲存過程儲存在資料庫內,可由應用程式通過一個呼叫執行,而且允許使用者宣告變數、邏輯控制語句以及其他強大的程式設計功能。
儲存過程可包含邏輯控制語句和資料操作語句,它可以接收引數、輸出引數、返回單個或多個結果集以及返回值。
儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個SQL語句快。
類似於C#中的類庫,SQL Server 提供了一些預編譯的儲存過程,這些儲存過程稱為“系統儲存過程”。
SQL Server中的儲存過程的特徵如下:
1>接收輸入引數,並向呼叫過程或語句返回值。
2>包含在資料庫中執行操作或呼叫其他儲存過程的程式設計語句。
3>向呼叫過程返回狀態值,指示執行過程是否成功(如果失敗,還返回失敗原因)
使用儲存過程有下列優點:
1>允許模組化程式設計
只需建立一次儲存過程並將其儲存在資料庫中,所以即可在程式中呼叫該過程任意次。
2>允許更快地執行
如果某操作需要大量的T-SQL程式碼或需要重複執行,儲存過程將比T-SQL批處理程式碼的執行要快。將在建立儲存過程時對其進行分析和優化,並可在首次執行該過程後使用該過程記憶體中的版本。但如果使用T-SQL批處理程式碼,每次執行T-SQL語句時,都要從客戶端重複傳送,並且在SQL-Server每次執行這些語句時,都要對其進行編譯和優化。
3>減少網路流量
建立使用儲存過程後,一個需要數百行T-SQL程式碼的操作,由一條執行該過程程式碼的單獨語句就可實現,而不需要在網路中傳送數百行程式碼
4>可作為安全機制使用
即使對於沒有直接執行儲存過程中語句的許可權的使用者,也可授予他們執行該儲存過程的許可權
儲存過程分為以下兩類:
1>系統儲存過程
2>使用者自定義儲存過程
常用的系統儲存過程:
sp_databases:列出伺服器上的所有資料庫
sp_helpdb:報告有關指定資料庫或所有資料庫的資訊
sp_renamedb:更改資料庫的名稱
sp_tables:返回當前環境下可查詢的物件的列表
sp_columns:返回某個表列的資訊
sp_help:檢視某個表的所有資訊
sp_helpconstraint:檢視某個表的約束
sp_helpindex:檢視某個表的索引
sp_stored_procedures:列出當前環境中的所有儲存過程
sp_password:新增或修改登入賬戶的密碼
sp_helptext:顯示預設值、未加密的儲存過程、使用者定義的儲存過程、觸發器或檢視的實際文字
另外,還有一個常用的擴充套件儲存過程:xp_cmdshell,它可以完成DOS命令下的一些操作,諸如建立資料夾、列出檔案列表等。
http://www.cnblogs.com/roucheng/
使用者定義的儲存過程:
除了系統儲存過程,使用者還可以建立自己的儲存過程,可使用Microsoft SQL Management Studio或使用T-SQL語句,使用Microsoft SQL Management Studio建立儲存過程的步驟類似於檢視,用於建立儲存過程的T-SQL語句為CREATE PROCEDURE。所有的儲存過程都建立在當前資料庫中。
建立不帶引數的儲存過程:
使用T-SQL語句建立儲存過程的語法如下:
CREATE PROC[EDURE] 儲存過程名
AS
SQL語句
呼叫儲存過程:
EXEC 儲存過程名
建立帶輸入引數的的儲存過程:
輸入引數:可以在呼叫時向儲存過程傳遞引數,此類引數可用來在儲存過程中傳入值。
帶輸入引數的儲存過程T-SQL語句如下:
CREATE PROC[EDURE] 儲存過程名
@引數1 資料型別 [ = 預設值 ],
……,
@引數n 資料型別 [ = 預設值 ]
AS
SQL語句
呼叫儲存過程:
EXEC 儲存過程名 引數1的值,……,引數n的值
或
EXEC 儲存過程名 @引數1=值,……,@引數n=值
建立帶輸出引數的儲存過程:
輸出引數:如果希望返回值,則可以使用輸出引數,輸出引數後有“OUTPUT”標記,執行儲存過程後,將把返回值存放在輸出引數中,可供其他T-SQL語句讀取訪問。
帶輸出引數的儲存過程T-SQL語法如下:
CREATE PROC[EDURE] 儲存過程名
@引數1 資料型別 [ OUTPUT ],
……,
@引數n 資料型別 [ OUTPUT ]
AS
SQL語句
呼叫儲存過程:
EXEC 儲存過程名 變數名 OUTPUT
相關推薦
SQL Server儲存過程多角度介紹
什麼是儲存過程: 儲存過程(Procedure)類似於C#語言中的方法,它是SQL語句和控制流語句的預編譯集合。儲存過程儲存在資料庫內,可由應用程式通過一個呼叫執行,而且允許使用者宣告變數、邏輯控制語句以及其他強大的程式設計功能。 儲存過程可包含邏輯控制語句和資料操作語句,
SQL server 儲存過程的編寫
USE [資料庫名稱] GO /****** Object: StoredProcedure [dbo].[insertbGait] Script Date: 2018/7/17 15:51:22 ******/ SET ANSI_NULLS ON GO
SQL SERVER儲存過程加密和安全上下文
對SQL Server 2008的安全入門略作小結,以作備忘。本文涉及兩個應用:儲存過程加密和安全上下文。 <一>儲存過程加密 SQL server,我已經成了儲存過程的忠實擁躉。在直接使用SQL語句還是儲存過程來處理業務邏輯時,我基本會毫不猶豫地選擇後者。 理由如下:
SQL Server 儲存過程返回值的幾種方式
獲得儲存過程的返回值–通過查詢分析器獲得 (1)不帶任何引數的儲存過程(儲存過程語句中含有return) —建立儲存過程 CREATE PROCEDURE testReturn AS return 145 GO —執行儲存過程 DECLARE @RC int exec @RC=
Yii2.0呼叫sql server儲存過程並獲取返回值
1、首先展示建立sql server儲存過程的語句,建立一個簡單的儲存過程,測試用。 1 SET ANSI_NULLS ON 2 GO 3 SET QUOTED_IDENTIFIER ON 4 GO 5 6 CREATE PROCEDURE [dbo].[register_info]
SQL Server儲存過程的使用
儲存過程概述 簡單來說,儲存過程就是一條或者多條sql語句的集合,可視為批處理檔案,但是其作用不僅限於批處理。 基本概念: SQL Server中的儲存過程是使用T_SQL編寫的程式碼段。它的目的在於能夠方便的從系統表中查詢資訊, 或者完成與更新資料
SQL Server 儲存過程返回值彙總
獲得儲存過程的返回值–通過查詢分析器獲得 (1)不帶任何引數的儲存過程(儲存過程語句中含有return) —建立儲存過程 CREATE PROCEDURE testReturn AS return 145 GO —執行儲存過程 DECLARE @RC in
Sql Server 儲存過程 - 使用者操作例項
使用者的增刪改查 新增 --新增使用者 create procedure addDeviceUser @name nvarchar(36) , @phone nvarchar(36) , @password nvarchar(255) as begin if exists(
Sql server 儲存過程
-- ======================================= -- Author: <zengyongbin> -- Create date: <2018-11-11> -- Description: <新增> --
關於SQL SERVER 儲存過程使用(2)
現在有一場景,需要調用出公司員工在本週的請假天數。程式碼如下(1),本人一開始寫的時候用遍歷裡面套著一個遍歷,發現效果出不來如下(2),求是否有什麼方法可以實現遍歷裡面還有個遍歷。 SQL程式碼(1): --建立儲存過程 create procedure LeaveT
SQL Server儲存過程中top後為變數時的處理
@pageRecordNum為每頁顯示的記錄數,@currentPageNum為當前的頁數 create proc pagination @pageRecordNum int,@currentPageNum int as declare @recNum varchar(
無意中發現的sql server 儲存過程加密破解方法
轉自:https://blog.csdn.net/gatr/article/details/51226122 儲存過程是資料庫中一個非常重要的該部分,很多業務邏輯都可能寫在儲存過程裡面,為了安全,部分儲存過程是加密存放的,如果我們想看到原始碼,就非常困難了,在sql se
SQL SERVER儲存過程批量插入資料庫表資料
CREATEPROCEDURE add_UserInfoASDECLARE@userCodeVARCHAR(30)DECLARE@userNameVARCHAR(30)DECLARE@userCode_baseVARCHAR(30)DECLARE@countINTEGERDECLARE@indexINTEGE
SQL server 儲存過程的建立並使用
什麼是儲存過程呢? 儲存過程就是作為可執行物件存放在資料庫中的一個或多個SQL命令。 通俗來講:儲存過程其實就是能完成一定操作的一組SQL語句。 那為什麼要用儲存過程呢? 1.儲存過程只在創造時進行編譯,以後每次執行儲存過程都不需再重新編譯,而一般SQL語句每執行一
Sql Server儲存過程從一個表中抓取資料填充到另一張表中
set ANSI_NULLS ON set QUOTED_IDENTIFIER ON go -- ============================================= -- Author: <alex,,Name> -- Create
SQL Server儲存過程Return、output引數及使用技巧
SQL Server目前正日益成為WindowNT作業系統上面最為重要的一種資料庫管理系統,隨著 SQL Server2000的推出,微軟的這種資料庫服務系統真正地實現了在WindowsNT/2000系列作業系統一統天下的局面,在微軟的作業系統上,沒有任何一種資料庫系統能
sql server儲存過程 以及幾個常用案例
Transact-SQL中的儲存過程,非常類似於Java語言中的方法,它可以重複呼叫。當儲存過程執行一次後,可以將語句快取中,這樣下次執行的時候直接使用快取中的語句。這樣就可以提高儲存過程的效能。 Ø 儲存過程的概念 儲存過程Procedure是一組為了完成特定功能的SQL語句集合,經編譯後儲存在資
sql server 儲存過程解密
問題一: DAC連線問題 1 先用有sysadmin角色的使用者登陸SQL Server Management Studio; 2 在工具欄上選資料庫引擎查詢;伺服器名稱改為 ADMIN:伺服器名稱 ;選項>連線屬性>連線到資料庫 改為加密儲存過程所在的資
SQL SERVER-儲存過程實現CRUD
CREATE PROCEDURE RegionUpdate ( @RegionID int, @RegionDescription nvarchar(100) ) AS BEGIN
Excel使用ADO呼叫SQL Server儲存過程
測試環境:SQL Server 2014,Excel 2013前期在做一個現場投票的小軟體,準備使用Excel實現,工作簿中包含有兩個工作表,各包含一個命令按鈕,分別用於提交和檢視投票結果。問題出在檢視投票按鈕上,起初只是使用SELECT語句查詢,一切正常;後期對於投票結果需