问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

简单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存储过程 ...

sql存储过程简单例题 sqlserver存储过程实例 plsql存储过程实例 sql存储过程实例详解 mysql存储过程实例 mysql存储过程实例详解 sql存储过程例子 oracle存储过程实例 oracle存储过程实例详解
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
平阴县第一中学建校背景 平阴新一中初中新生应该准备什么东西? 2010年平阴新一中高中一年学费多少钱 平阴新一中往年试题,求,近期用,加招生计划!!!瞎答者S!!!请在两天内解 ... 硬盘格式化分区 硬盘ssd和hhd混合用 两个盘都要分区 在分区的时候 4k对... 硬盘功耗:固态与机械谁更耗电? ...块现象?它是怎么拼出来的?大学某老师说谷歌地图是人为P的..._百度... 使用usb分线器连接鼠标,usb optical mouse安装失败,(直接插电脑上的时候... 我用带芯片的USB数据线连接2个电脑,已经安装了数据线的驱动了,现在想让... 请问,从真南路1051弄到澳门路519号怎么走? 华为儿童手表3X和手机绑定不了? 华为手表3x能不能用浏览器? 华为儿童手表3X好友步数排名无法显示 华为儿童手表3X家长打电话一直提示正在通话中? 华为儿童手表3X可以发送哪些类型的消息? 华为儿童手表3X可以下其他软件吗? 华为儿童手表3X支持那些网络类型和网络制式? 华为儿童手表3X相机都有什么功能? 华为儿童手表3X可以防水吗?防水性能如何? 华为儿童手表3X充满电可以用多长时间? 学美容多少钱,要学多久啊? 去美容院做一次美容,大概要多少钱? 学美容最佳年龄是多少岁,我刚成年能学吗? 学美容的学费大概多少? 学美容学费一般多少 零基础学美容,学美容一般要多久,学美容多少钱 汽车做美容一次大概要多少钱? 一般年轻女性每月在美容等方面的花销大概是多少? 学美容大概需要多长时间?多少钱 学美容多少钱 华为儿童手表3X是否支持与小天才等儿童手表摇一摇加好友 股票中520战法是什么意思? SQL存储过程实例 华为儿童手表3X,坐公交或地铁能在支付宝上扫码吗?怎么操作? sql 存储过程是怎么实现的 简单的例子和解释! 股票买卖盘的数字代表什么? 股票盘口暗语是什么? sql存储过程,给几个实例做做。。。 SQL2005 存储过程调用存储过程,求实例 常用的顶部卖出股票暗号有哪些? Sql 存储过程 实例 贴源码就好了 股市盘口语言555,代表什么意思? sql 中的存储过程谁能描述下下··谢谢 股市暗语、代语全解 sql有哪些系统存储过程,各有什么功能? SQL 存储过程相关 记住66个盘面暗语 SQL Server的存储过程怎么写? 股票成交量中有哪些暗语? SQL语句问题:存储过程定义是什么?什么时候用它?作用是什么?怎样写,来...