儲存過程簡單操作

2021-06-02 06:03:33 字數 4141 閱讀 9358

簡介:

儲存過程(stored procedure), 是一組為了完成特定功能的sql 語句,集經編譯後

儲存在資料庫中,使用者通過指定儲存過程的名字並給出引數,如果該儲存過程帶有引數來執行

它,在sql server 的系列版本中,儲存過程分為兩類:系統提供的儲存過程和使用者自定義儲存過程

。系統sp,主要儲存master 資料庫中,並以sp_為字首並且系統儲存過程主要是從系統表中獲取

資訊,從而為系統管理員管理sql server。 使用者自定義儲存過程是由使用者建立,並能完成

某一特定功能,如:查詢使用者所需資料資訊的儲存過程。

儲存過程具有以下優點

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

儲存過程在被建立以後,可以在程式中被多次呼叫,而不必重新編寫該儲存過程的sql語句,而

且資料庫專業人員可隨時對儲存過程進行修改,但對應用程式源**毫無影響。因為應用程式源代

碼只包含存

儲過程的呼叫語句,從而極大地提高了程式的可移植性。

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

如果某一操作包含大量的transaction-sql **,,或分別被多次執行,那麼儲存過程要比批處理

的執行速度快很多,因為儲存過程是預編譯的,在首次執行乙個儲存過程時,查詢優化器對其進

行分析優

化,並給出最終被存在系統表中的執行計畫,而批處理的transaction-sql 語句在每次執行時

都要進行

編譯和優化,因此速度相對要慢一些。

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

對於同乙個針對資料資料庫物件的操作,如查詢修改,如果這一操作所涉及到的transaction-sql

語句被組織成一儲存過程,那麼當在客戶計算機上呼叫該儲存過程時,網路中傳送的只是該調

用語句,否

則將是多條sql 語句從而大大增加了網路流量降低網路負載。

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

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

流程控制語句:

(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

end儲存格式:

建立儲存過程

create proc dbo.儲存過程名

儲存過程引數

as執行語句

return

執行儲存過程

goeg(例):

-- 變數的宣告,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 不能用於參與了索引檢視的表。

示例下例刪除 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,'男'

JDBC操作簡單的儲存過程

執行儲存過程 author john public class procedure string sql try catch sqlexception e finally 這是乙個簡單的儲存過程 create procedure addid 建立儲存過程,名字為addid in pusername ...

SQL SERVER簡單儲存過程

declare code varchar 5 startday datetime declare m cursor cursor for select start code,start day from merrycris tb new open m cursor fetch next from m...

簡單儲存過程語句

if exists select from dbo.sysobjects whereid object id n dbo pro relateproselect andobjectproperty id n isprocedure 1 drop procedure dbo pro relatepro...