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查詢的結果存...