SQL Server儲存過程入門學習

2022-09-24 17:48:13 字數 2020 閱讀 7942

儲存過程的定義,

儲存過程(stored procedure),是一組為了完成特定功能的sql 語句,集經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數,如果該儲存過程帶有引數來執行。

在sql server 的系列版本中,儲存過程分為兩類:系統提供的儲存過程和使用者自定義儲存過程。系統sp,主要儲存master 資料庫中,並以sp_為字首並且系統儲存過程主要是從系統表中獲取資訊,從而為系統管理員管理sql server。

使用者自定義儲存過程是由使用者建立,並能完成某一特定功能,如程式設計客棧:查詢使用者所需資料資訊的儲存過程。

這裡我們看看儲存過程的好處;

(1)重複使用。儲存過程可以重複使用,從而可以減少資料庫開發人員的工作量。

(2)提高效能。儲存過程在建立的時候就進行了編譯,將來使用的時候不用再重新編譯。一般的sql語句每執行一次就需要編譯一次,所以使用儲存過程提高了效率。

(3)減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。

(4)安全性。引數化的儲存過程可www.cppcns.com以防止sql注入式的攻擊,而erjmakcms且可以將grant、deny以及revoke許可權應用於儲存過程。

好了,我們來看看建立的基本語法

定義儲存過程的語法

createproc[edure]儲存過程名

@引數1資料型別=預設值,

…… ,

@引數n資料型別output

assql語句

go引數是可選的

引數分為輸入引數、輸出引數

輸入引數允許有預設值

這裡來建立乙個簡單的儲存過程

create procedure userlogin@name varchar(20),@password varchar(20)

as-- 定義乙個臨時用來儲存密碼的變數--declare @strpwd nvarchar(20) 這裡先不介紹變數。稍後的文章會詳細講到beginselect * from userinfo where username=@name and userpass=@passwordendgo

首先我們用簡單的sql查詢

select * from userinfo where username='admin'

查詢結果:

---------------------

username userpass

admin admin

現在我們來執行我們的儲存過程

exec userlogin admin,admin

--或這樣呼叫:

exec userlog程式設計客棧in @name='admin',@password='admin'

查詢結果:

---------------------

username userpass

admin admin

注意,在sql server中,所有使用者定義的變數都以「@」開頭,output關鍵字表示這個引數是用來輸出的,as之後就是儲存過程內容了。只要將以上**在「查詢分析器」裡執行一次,sql server就會在當前資料庫中建立乙個名為「userlogin」的儲存過程。你可以開啟「企業管理器」,選擇當前操作的資料庫,然後在左邊的樹型列表中選擇"可程式設計性->儲存過程",此時就可以在右邊的列表中看到你剛剛建立的儲存過程了(如果沒有,重新整理一下即可)。

看到了在資料中呼叫儲存過程的方法有兩種(這裡exec與execute等效);

exec過程名 引數值1,引數值2,....

或者exec 引數1=引數值1,引數2=引數值2....

上面我們也看到了。

建立這樣的儲存過程有什麼用呢,不是只能在資料中檢視賽。

我們在做web或者winform 程式,假設需要個登入,好,我們可以呼叫用這個儲存過程來登入,根據傳入的引數,如果查詢出來有記錄,那麼這條記錄在資料庫中存在,表示登入成功,否則失敗。

這樣做的目的更加安全,可以防止sql注入。

本文標題: sql server儲存過程入門學習

本文位址: /shujuku/mssql/98537.html

SQL Server儲存過程入門案例詳解

問題提出我使用過幾次sql server,但所有與資料庫的互動都是通過應用程式的編碼來實現的。我不知到在 使用儲存過程,也不了解實現儲存過程需要做哪些工作。希望能詳細說明。儲存過程是儲存於資料庫中的一組t sql語句。有了儲存過程之後,與資料庫的互動就沒有必要在程式中寫一堆的sql語句,而只需用一條...

SQLSERVER儲存過程入門與提高

什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要新增...

SQLSERVER儲存過程入門與提高

什麼是儲存過程呢?定義 將常用的或很複雜的工作,預先用sql語句寫好並用乙個指定的名稱儲存起來,那麼以後要叫資料庫提供與已定義好的儲存過程的功能相同的服務時,只需呼叫execute,即可自動完成命令。講到這裡,可能有人要問 這麼說儲存過程就是一堆sql語句而已啊?microsoft公司為什麼還要新增...