簡單SQL儲存過程例項

2021-06-28 10:21:12 字數 3223 閱讀 8716

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

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

iduserid

***money

zhangsan

男wangwu

男zhangsan男

要求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則傳回到執行批次的客戶端中。

例項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_idgo

au_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 = @lastnamego

au_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 @lastnamego

au_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 的內容例如以下id userid money 001zhangsan 男 30 002 wangwu 男 50 003 zhangsan 男 40 要求1 查詢表bankmoney的內容的儲存過程 create procedure...

簡單SQL儲存過程例項

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

sql儲存過程學習例項

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