儲存過程之基本語法

2021-09-06 14:24:32 字數 4043 閱讀 4073

sql儲存過程基本語法之簡介:

儲存過程(stored procedure), 是一組為了完成特定功能的sql 語句,集經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數,如果該儲存過程帶有引數來執行它,在sql server 的系列版本中,儲存過程分為兩類:系統提供的儲存過程和使用者自定義儲存過程。

系統sp,主要儲存master 資料庫中,並以sp_為字首並且系統儲存過程主要是從系統表中獲取資訊,從而為系統管理員管理sql server。 使用者自定義儲存過程是由使用者建立,並能完成某一特定功能,如:查詢使用者所需資料資訊的儲存過程。儲存過程具有以下優點

1.儲存過程允許標準元件式程式設計(模組化設計)

儲存過程在被建立以後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的sql語句,而且資料庫專業人員可隨時對儲存過程進行修改,但對應用程式源**毫無影響。因為應用程式源**只包含儲存過程的呼叫語句,從而極大地提高了程式的可移植性。

2.儲存過程能夠實現快速的執行速度

如果某一操作包含大量的transaction-sql **,,或分別被多次執行,那麼儲存過程要比批處理的執行速度快很多,因為儲存過程是預編譯的,在首次執行乙個儲存過程時,查詢優化器對其進行分析優化,並給出最終被存在系統表中的執行計畫,而批處理的transaction-sql 語句在每次執行時都要進行編譯和優化,因此速度相對要慢一些。

3.儲存過程能夠減少網路流量

對於同乙個針對資料資料庫物件的操作,如查詢修改,如果這一操作所涉及到的transaction-sql 語句被組織成一儲存過程,那麼當在客戶計算機上呼叫該儲存過程時,網路中傳送的只是該呼叫語句,否則將是多條sql 語句從而大大增加了網路流量降低網路負載。

4.儲存過程可被作為一種安全機制來充分利用

系統管理員通過,對執行某一儲存過程的許可權進行限制,從而能夠實現對相應的資料訪問許可權的限制。

sql儲存過程基本語法之變數

@i三、流程控制語句(if else | select case | while )

select ... case 例項

declare @iret int, @pkdisp varchar(20)

set @iret = '1'

select @iret = 

case

when @pkdisp = '一' then 1

when @pkdisp = '二' then 2

when @pkdisp = '三' then 3

when @pkdisp = '四' then 4

when @pkdisp = '五' then 5

else 100

endsql儲存過程基本語法之儲存過程格式

建立儲存過程

create proc dbo.儲存過程名

儲存過程引數

as執行語句

return

執行儲存過程

go-- 變數的宣告,sql裡面宣告變數時必須在變數前加@符號

declare @i int

-- 變數的賦值,變數賦值時變數前必須加set

set @i = 30

-- 宣告多個變數

declare @s varchar(10),@a int

-- sql 裡if語句

if 條件 begin

執行語句

endelse begin

執行語句

enddeclare @d int

set @d = 1

if @d = 1 begin

-- 列印

print '正確'

endelse begin

print '錯誤'

end-- sql 裡的多條件選擇語句.

declare @iret int, @pkdisp varchar(20)

set @iret = 1

select @iret = 

case

when @pkdisp = '一' then 1

when @pkdisp = '二' then 2

when @pkdisp = '三' then 3

when @pkdisp = '四' then 4

when @pkdisp = '五' then 5

else 100

end-- 迴圈語句

while 條件 begin    

執行語句

enddeclare @i int

set @i = 1

while @i<1000000 begin

set @i=@i+1

end-- 列印

print @i

-- truncate 刪除表中的所有行,而不記錄單個行刪除操作,不能帶條件

truncate table 在功能上與不帶 where 子句的 delete 語句相同:二者均刪除表中的全部行。但 truncate table 比 delete 速度快,且使用的系統和事務日誌資源少。 delete 語句每次刪除一行,並在事務日誌中為所刪除的每行記錄一項。truncate table 通過釋放儲存表資料所用的資料頁來刪除資料,並且只在事務日誌中記錄頁的釋放。truncate table 刪除表中的所有行,但表結構及其列、約束、索引等保持不變。新行標識所用的計數值重置為該列的種子。如果想保留標識計數值,請改用 delete。如果要刪除表定義及其資料,請使用 drop table 語句。對於由 foreign key 約束引用的表,不能使用 truncate table,而應使用不帶 where 子句的 delete 語句。由於 truncate table 不記錄在日誌中,所以它不能啟用觸發器。truncate table 不能用於參與了索引檢視的表。

sql儲存過程基本語法之示例

下例刪除 authors 表中的所有資料。*/

truncate table authors

-- select into 從乙個查詢的計算結果中建立乙個新錶。 資料並不返回給客戶端,這一點和普通的 select 不同。 新錶的字段具有和 select 的輸出字段相關聯(相同)的名字和資料型別。

select * into newtable

from uname

-- insert into select

-- 表abc必須存在

-- 把錶uname裡面的字段username複製到表abc

insert into abc select username from uname

-- 建立臨時表

create table #temp(

uid int identity(1, 1) primary key,

username varchar(16),

pwd varchar(50),

age smallint,

*** varchar(6))

-- 開啟臨時表

select * from #temp

-- 儲存過程

-- 要建立儲存過程的資料庫

use test

-- 判斷要建立的儲存過程名是否存在

if exists(select name from sysobjects where name='csp_addinfo' and  type='p')

-- 刪除儲存過程

drop procedure dbo.csp_addinfo

go-- 建立儲存過程

create proc dbo.csp_addinfo

-- 儲存過程引數

@username varchar(16),

@pwd varchar(50),

@age smallint,

@*** varchar(6)

as-- 儲存過程語句體

insert into uname (username,pwd,age,***)

values (@username,@pwd,@age,@***)

return

-- 執行

go-- 執行儲存過程

exec csp_addinfo 'junn.a','123456',20,'男'

儲存過程基本語法

儲存過程可以看作是在資料庫中sql語句的集合,通過執行儲存過程來達到對資料庫的操作,它實現功能和sql語句實現的功能是一樣的,但是兩者在語法上有很大不同,下面介紹儲存過程的用法。1 宣告變數 在儲存過程中宣告變數用declare關鍵字語法如下 declare 示例 declare studentid...

oracle 儲存過程基本語法

1.基本結構 create or replace procedure 儲存過程名字 引數1 in number,引數2 in number is 變數1 integer 0 變數2 date begin end 儲存過程名字 2.select into statement 將select查詢的結果存...

oracle儲存過程基本語法

1.基本結構 create or replace procedure 儲存過程名字 引數1 in number,引數2 in number is 變數1 integer 0 變數2 date begin end 儲存過程名字 2.select into statement 將select查詢的結果存...