大學裡面對儲存過程沒有講到什麼,工作了一段時間,對儲存過程還是沒有用到,根本不需要去寫儲存過程,可能是做的軟體方向的原因吧。為了以後發展,決定從零開始學習下。
這裡看看儲存過程的定義,
儲存過程(stored procedure),是一組為了完成特定功能的sql 語句,集經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出參www.cppcns.com數,如果該儲存過程帶有引數來執行。
在sql server 的系列版本中,儲存過程分為兩類:系統提供的儲存過程和使用者自定義儲存過程。
系統sp,主要儲存master 資料庫中,並以sp_為字首並且系統儲存過程主要是從系統表中獲取資訊,從而為系統管理員管理sql server。
常用系統儲存過程有:
複製** **如下:
exec sp_databases; --檢視資料庫
exec sp_tables; --檢視表
exec sp_columns student;--檢視列
exec sp_helpindex student;--檢視索引
exec sp_helpconstraint student;--約束
exec sp_stored_procedures;
exec sp_helptext 'sp_stored_procedures';--檢視儲存過程建立、定義語句
exec sp_rename student, stuinfo;--修改表、索引、列的名稱
exec sp_renamedb mytempdb, mydb;--更改資料庫名稱
exec sp_defaultdb 'master', 'mydb';--更改登入名的預設資料庫
exec sp_helpdb;--資料庫幫助,查詢資料庫資訊
exec sp_helpdb master;
使用者自定義儲存過程是由使用者建立,並能完成某一特定功能,如:查詢使用者所需資料資訊的儲存過程。
這裡我們看看儲存過程的好處;
(1)重複使用。儲存過程可以重複使用,從而可以減少資料庫開發人員的工作量。
(2)提高效能。儲存過程在建立的時候就進行了編譯,將來使用的時候不用再重新編譯。一般的sql語句每執行一次就需要編譯一次,所以使用儲存過程提高了效率。
(3)減少網路流量。儲存過程位於伺服器上,呼叫的時候只需要傳遞儲存過程的名稱以及引數就可以了,因此降低了網路傳輸的資料量。
(4)安全性。引數化的儲存過程可以防止sql注入式的攻擊,而且可以將grant、deny以及revoke許可權應用於儲存過程。
好了,我們來看看建立的基本語法
複製** **如下:
定義儲存過程的語法
create proc[edure] 儲存過程名
@引數1 資料型別 = 預設值,
&www.cppcns.comnbsp; …… ,
@引數n 資料型別 output
assql語句
go,引數是可選的
,引數分為輸入引數、輸出引數
,輸入引數允許有預設值
這裡來建立乙個簡單的儲存過程
create procedure userlogin
@name varchar(20),
@password varchar(20)
as-- 定義乙個臨時用來儲存密碼的變數
--declare @strpwd nvarchar(20) 這裡先不介紹變數。稍後的文章會詳細講到
begin
select * from userinfo where username=@name anwww.cppcns.comd userpass=@password
endgo
首先我們用簡單的sql查詢
select * from userinfo where username='admin'
查詢結果:
username userpass
admin admin
現在我們來執行我們的儲存過程
exec userlogin admin,admin
--或這樣呼叫:
exec userlogin @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....
上面我們也看到了。
如果要刪除乙個儲存過程,用drop
像這樣複製** **如下:
drop procedure userlogin
建立這樣的儲存過程有什麼用呢,不是只能在資料中檢視賽。
我們在做web或者winform 程式,假設需要個登入,好,我們可以呼叫用這個儲存過程來登入,根據傳入的引數,如果查詢出來有記錄,那麼這條記錄在資料庫中存在,表示登入成功,否則失敗。
這樣做的目的更加安全,可以防止sql注入。
本文標題: 關於sql 儲存過程入門基礎(基礎知識)
本文位址: /shujuku/mssql/93617.html
SQL基礎 儲存過程
儲存過程 stored procedure 是一種儲存在資料庫中的批處理,它由一組完成特定功能的sql語句集組成,具有輸入引數,輸出引數以及返回值。資料庫表 查詢學生表並按姓名排序 go create procedure getorderedstudents asselect from studen...
SQL基礎之儲存過程
網上有個比較通俗易懂的理解 儲存過程就是預先定義好的sql語句,然後儲存起來,等你用的時候再把自己所需要的匹配的sql語句用execute 即exec 呼叫就行!使用儲存過程的優勢 1.效能高 一條sql語句可以被多個地方使用,這樣進行複雜的操作時 比如多張表連表查詢 可將那些複雜的操作用儲存過程先...
sql基礎之四 儲存過程
網上有個比較通俗易懂的理解 儲存過程就是預先定義好的 sql語句,然後儲存起來,等你用的時候再把自己所需要的匹配的sql語句用execute 即exec 呼叫就行!使用儲存過程的優勢 1.效能高 一條sql語句可以被多個地方使用,這樣進行複雜的操作時 比如多張表連表查詢 可將那些複雜的操作用儲存過程...