簡單SQL儲存過程例項

2021-09-06 16:10:26 字數 3273 閱讀 7517

例項1:僅僅返回單一記錄集的儲存過程。

銀行存款表(bankmoney)的內容例如以下id

userid

***money

001zhangsan 男

30 002

wangwu 男

50 003

zhangsan 男

40 要求1:查詢表bankmoney的內容的儲存過程

create procedure sp_query_bankmoney

asselect * from bankmoney

goexec sp_query_bankmoney

注*  在使用過程中僅僅須要把中的sql語句替換為儲存過程名,就能夠了非常方便吧!

例項2(向儲存過程中傳遞引數):

增加一筆記錄到表bankmoney,並查詢此表中userid= zhangsan的全部存款的總金額。

create proc insert_bank @param1 char(10),@param2 varchar(20),@param3 varchar(20),@param4 int,@param5 int output

with encryption ---------

加密as

insert bankmoney (id,userid,***,money)

values(@param1,@param2,@param3, @param4)

select @param5=sum(money) from bankmoney where userid='zhangsan'

go在sql server查詢分析器中執行該儲存過程的方法是:

declare @total_price int

exec insert_bank '004','zhangsan','男',100,@total_price output

print '總剩餘金額為'+convert(varchar,@total_price)

go在這裡再囉嗦一下儲存過程的3種傳回值(方便正在看這個樣例的朋友不用再去檢視語法內容):

1.以return傳回整數

2.以output格式傳回引數

3.recordset

傳回值的差別:

output

和return都可在批次程式中用變數接收,而recordset則傳回到執行批次的client中。

例項3:使用帶有複雜select 語句的簡單過程

以下的儲存過程從四個表的聯接中返回全部作者(提供了姓名)、出版的書籍以及出版社。該儲存過程不使用不論什麼引數。

use pubs

if exists (select name from sysobjects

where name = 'au_info_all' and type = 'p')

drop procedure au_info_all

gocreate procedure au_info_all

asselect au_lname, au_fname, title, pub_name

from authors a inner join titleauthor ta

on a.au_id = ta.au_id inner join titles t

on t.title_id = ta.title_id inner join publishers p

on t.pub_id = p.pub_id

goau_info_all 儲存過程能夠通過下面方法執行:

execute au_info_all

例項4:使用帶有引數的簡單過程

create procedure au_info

@lastname varchar(40),

@firstname varchar(20)

asselect au_lname, au_fname, title, pub_name

from authors a inner join titleauthor ta

on a.au_id = ta.au_id inner join titles t

on t.title_id = ta.title_id inner join publishers p

on t.pub_id = p.pub_id

where  au_fname = @firstname

and au_lname = @lastname

goau_info 儲存過程能夠通過下面方法執行:

execute au_info 'dull', 'ann'

-- or

execute au_info @lastname = 'dull', @firstname = 'ann'

-- or

execute au_info @firstname = 'ann', @lastname = 'dull'

例項5:使用帶有萬用字元引數的簡單過程

create procedure au_info2

@lastname varchar(30) = 'd%',

@firstname varchar(18) = '%'

asselect au_lname, au_fname, title, pub_name

from authors a inner join titleauthor ta

on a.au_id = ta.au_id inner join titles t

on t.title_id = ta.title_id inner join publishers p

on t.pub_id = p.pub_id

where

au_fname like @firstname

and au_lname like @lastname

goau_info2 儲存過程能夠用多種組合執行。以下僅僅列出了部分組合:

execute au_info2

-- or

execute au_info2 'wh%'

-- or

execute au_info2 @firstname = 'a%'

-- or

execute au_info2 '[ck]ars[oe]n'

-- or

execute au_info2 'hunter', 'sheryl'

-- or

execute au_info2 'h%', 's%'

簡單SQL儲存過程例項

例項1 只返回單一記錄集的儲存過程。銀行存款表 bankmoney 的內容如下 iduserid money zhangsan 男wangwu 男zhangsan男 要求1 查詢表bankmoney的內容的儲存過程 create procedure sp query bankmoney assele...

簡單SQL儲存過程例項

例項1 僅僅返回單一記錄集的儲存過程。銀行存款表 bankmoney 的內容例如以下id userid money 001zhangsan 男 30 002 wangwu 男 50 003 zhangsan 男 40 要求1 查詢表bankmoney的內容的儲存過程 create procedure...

sql儲存過程學習例項

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