Sql Server的儲存過程詳解

2021-10-24 14:54:42 字數 1891 閱讀 4766

儲存過程(stored procedure)是預編譯sql語句集合,這些語句儲存在乙個名稱(儲存過程的名稱)下並作為單元來處理。儲存過程代替了傳統的逐條執行sql語句的方式,乙個儲存過程中可以包含查詢、插入、刪除、更新等操縱的一系列sql語句,當這個儲存過程被呼叫執行時,這些操作也會同時執行。

儲存過程與其他程式語言中的過程類似,它可以接受輸入引數,並以輸出引數的格式向呼叫過程或批處理返回多個值;包含用於在資料庫中執行操作(包括呼叫其他過程)的變成語句;向呼叫過程或批處理返回狀態值,以指明成功或者失敗(以及失敗的原因)。

sql server提供了三種型別的儲存過程

1.系統儲存過程:用來管理sql server與顯示有關資料庫和使用者的資訊的儲存過程。

2.自定義儲存過程:使用者在sql server中通過採用sql語句建立儲存過程。

3.擴充套件儲存過程:通過程式語言(例如c)建立外部例程,並將這個例程在sql server中作為儲存過程使用。

語法如下

create

proc

procedure proc_student

@proc_son

intas

select

*from student where sno =

@proc_son

儲存過程建立完成之後,可以通過execute命令執行,可簡寫為exec。

1.execute

executeyonglai zhixing transact-sql 中命令字串、字串、或者執行下列模組之一:系統儲存過程、使用者自定義儲存過程、標量值使用者定義函式或者擴充套件儲存過程。

2.使用execute執行儲存過程

例如執行儲存過程proc_stu

exec proc_stu
1.使用 sys.sql_modules 檢視儲存過程定義;

select

*from sys.sql_modules

2.使用 object_definition 檢視儲存過程定義

object_definition(object_id)
3.使用 sp_helptext 檢視儲存過程的定義

顯示使用者定義規則的定義、預設值、未加密的transact-sql 儲存過程、使用者定義transact-sql函式、觸發器、計算列、check約束、檢視或系統物件(如系統儲存過程)。語句如下:

sp_helptext 'proc_stu'
修改儲存過程可以改變儲存過程當中的引數或者語句,可以通過sql語句中的 alter procedure 語句實現。雖然刪除並重新建立該儲存過程,也可以達到修改儲存過程的目標,但是將丟失與該儲存過程關聯的所有許可權。

1.alter procedure 語句

alter procedure 語句用來修改通過執行 create procedur語句建立過程。該語句修改儲存過程時,不會更改許可權,也不影響相關的儲存過程或觸發器。

例:修改名為「proc_stu」的儲存過程。

alter

procedure

[dbo]

.[proc_stu]

@son

varchar(10

)asselect

*from student

sp_rename 'proc_stu'

,'proc_stuinfo'

注意:更改物件名的任一部分都可能破壞指令碼和儲存過程。建議不要使用此語句來重新命名儲存過程、觸發器、使用者自定義函式或檢視;而是刪除該物件,然後使用新名稱重新建立該物件。

drop procendure proc_student

SQLserver的儲存過程

儲存過程 create 是建立儲存過程,alter 是更改 改變儲存過程 在第一次寫儲存過程時用 create 若修改儲存過程程式之後,則 alter 替換create 再執行 在資料庫中 begin end 為大括號的意思 建立儲存過程的格式 procedure可簡寫為proc proc為程式 步...

sql server儲存過程

建立表的語句 create table student sno int primary key,sname nvarchar 30 sgentle nvarchar 2 sage int,sbirth smalldatetime,sdept nvarchar 30 drop table studen...

SQLSERVER儲存過程

sqlserver儲存過程使用說明書 引言首先介紹一下什麼是儲存過程 儲存過程就是將常用的或很複雜的工作,預先用 sql語句寫好並用乙個指定的名稱儲存起來,並且這樣的語句是放在資料庫中的,還可以根據條件執行不同 sql語句,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫 ex...