简单sql存储过程实例、储过程实战
发布网友
发布时间:2022-04-23 13:21
我来回答
共2个回答
懂视网
时间:2022-04-30 02:41
摘自:http://blog.csdn.net/libra6956/article/details/5589173
实例1:只返回单一记录集的存储过程。
银行存款表(bankMoney)的内容如下
Id
|
userID
|
Sex
|
Money
|
001
|
Zhangsan
|
男
|
30
|
002
|
Wangwu
|
男
|
50
|
003
|
Zhangsan
|
男
|
40
|
要求1:查询表bankMoney的内容的存储过程
create procedure sp_query_bankMoney
as
select * from bankMoney
go
exec 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,sex,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
GO
CREATE PROCEDURE au_info_all
AS
SELECT 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
GO
au_info_all 存储过程可以通过以下方法执行:
EXECUTE au_info_all
实例4:使用带有参数的简单过程
CREATE PROCEDURE au_info
@lastname varchar(40),
@firstname varchar(20)
AS
SELECT 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
GO
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) = ‘%‘
AS
SELECT 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
GO
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存儲過程實例
标签:
热心网友
时间:2022-04-29 23:49
实例1:只返回单一记录集的存储过程。
银行存款表(bankMoney)的内容如下
Id
userID
Sex
Money
001
Zhangsan
男
30
002
Wangwu
男
50
003
Zhangsan
男
40
要求1:查询表bankMoney的内容的存储过程
create
procere
sp_query_bankMoney
as
select
*
from
bankMoney
go
exec
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,sex,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
GO
CREATE
PROCEDURE
au_info_all
AS
SELECT
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
GO
au_info_all
存储过程可以通过以下方法执行:
EXECUTE
au_info_all
实例4:使用带有参数的简单过程
CREATE
PROCEDURE
au_info
@lastname
varchar(40),
@firstname
varchar(20)
AS
SELECT
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
GO
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)
=
'%'
AS
SELECT
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
GO
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、MySql 支持 IN (传递给存储过程) , OUT (从存储过程传出) 和 INOUT (对存储过程传入和传出) 类型的参数 , 存储过程的代码位于 BEGIN 和 END 语句内 , 它们是一系列 SQL 语句 , 用来检索值 , 然后保存到相应的变量 (通过指定INTO关键字) ;2、下面的存储过程接受三个参数 , 分别用于获取...
一个简单的存储过程
1、确定mysql服务器已经开启;2、连接mysql;3、进入相应的数据库;4、创建存储过程,创建一个简单的查询功能的存储过程;5、显示存储过程;6、调用存储过程即可。
存储过程怎么写啊
//创建存储过程 CREATE PROCEDURE userData(IN id INT )BEGIN SELECT * from userdata WHERE userflag = id;END;其中IN是传进去的变量;drop procedure userData;//销毁这个存储过程。call userData(2) //调用存储过程。
SQL05 存储过程实现把一个表的数据插入另一个表的后半部分~
1、A表的后面3个字段用默认值来处理 2、用视图 假如B表中的数据是恒定不变的,我觉得用第2种方法会更好点,也更节约空间
怎样在pl/sql中创建,执行和删除存储过程
一、创建存储过程1、语法格式:create proc | procedure pro_name [{@参数数据类型} [=默认值] [output], {@参数数据类型} [=默认值] [output], ... ]as SQL_statements 以上是最基本语法,举个简单的例子:CREATE proc p_test asselect retu = 12、执行存储过程 EXECUTE Pro...
怎么用存储过程来做数据的按条件查询SqlServer数据库
--模糊查询图书的存储过程 --判断,如果已经存在相同名称的存储过程就将其删除 IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE NAME = 'PRO_SELECTBOOKINFO')DROP PROCEDURE PRO_SELECTBOOKINFO GO CREATE PROCEDURE PRO_SELECTBOOKINFO --创建存储过程 BOOKNAME VARCHAR(20)='', --声明变量,图书名称 TYPE...
sql的奇怪问题,储存过程一嵌套就奇慢
既然是临时表了,那临时表里的数据应该是每次执行这个存储过程的时候都让它为空就得了。。 那样的话就不用检索临时表的数据了。 在此对一个系统表进行判断是否重建临时表。。代码:CREATE proc test startStation nvarchar(50),@endStation nvarchar(50)as begin --临时表,储存最终结果 if exists(...
用mybatis做oracle的储存过程
1.在数据库中创建以下的存储过程:2.编写SQL映射文件WxclDAO.xml: <![CDATA[call pro_wxcl(#{result,mode=OUT,jdbcType=CURSOR,javaType=java.sql.ResultSet,resultMap=WxclMap},{wxclid,mode=IN,jdbcType=VARCHAR})]]> 其中statementType="CALLABLE"表示要调用存储过程,parameterType参数类型;...
求用sql或存储过程实现excel函数 percentile
create table tb(Class int,Salary int,Median decimal(10,2))insert tb select 1,50,NULL union all select 2,150,NULL union all select 3,100,NULL union all select 4,200,NULL union all select 5,200,NULL union all ...
如何创建SQL存储过程?
操作者:'+@Account+','+'用户名:'+@strName+'手机:'+@strMobile+'备注:'+@strRemark+')' --设置变量的值 exec ProcRecordLog @Account,'添加',@Content ---执行储过程ProcRecordLog return @ID end GO 这个存储后面调用了ProcRecordLog存储过程 ...