1. 程式人生 > >SQL Server儲存過程多角度介紹

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語句查詢,一切正常;後期對於投票結果需