简单sql存储过程实例、储过程实战

 实例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%'

时间: 2024-09-28 22:14:39

简单sql存储过程实例、储过程实战的相关文章

sql 存储过程实例教程

create or replace PROCEDURE CMPP_SUBMIT_REMOVE_PROCEDURE Is   dEndTime date; -- 每次处理是时间点   -- 取得要处理的数据ID   cursor c_cmpp_submit(endTime date) is   select id from cmpp_submit     where ((ih_process <> 'insert_cmpp_submit' and ih_process <> 'wai

sql存储过程实例与相关基础知识

先看一下存储过程的相关知识吧 一.创建存储过程 create procedure 存储过程名称 参数列表 as begin -- end 二.调用存储过程 call 存储过程名称() 三.删除存储过程 drop procedure 存储过程名称 注意:不能在一个存储过程中删除另一个存储过程,只能调用另一个存储过程. 四.其他常用命令 1.show procedure status 显示数据库中所有存储过程基本信息 2.show create procedure 存储过程名称 显示某个存储过程详细

sql存储过程详解_MsSql

1,不带参数的存储过程 2,带输入参数的存储过程 3,带输入和输出参数的存储过程 4,带返回值的存储过程 不带参数的存储过程 例如,以下存储过程返回Employees表中所有职员的记录. 存储过程代码: USE TSQLFundamentals2008; GO IF OBJECT_ID('usp_ProcDemoNoParam','P') IS NOT NULL DROP PROC usp_ProcDemoNoParam; GO -- 1,不带参数 CREATE PROC usp_ProcDem

Sql存储过程游标循环的用法及sql如何使用cursor写一个简单的循环_MsSql

用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理 ================== DECLARE @A1 VARCHAR(10), @A2 VARCHAR(10), @A3 INT DECLARE CURSOR YOUCURNAME FOR SELECT A1,A2,A3 FROM YOUTABLENAME OPEN YOUCURNAME fetch next from youcurname into @a1,@a2,@a3 while @@fetch

SQL Server储过程加密和解密原理深入分析_mssql2008

开始: -------------------------------------------------------------------------------- 在网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的.后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程(sp_EncryptObject),和一个解密存储过程(sp_EncryptObject),它们可以应用于S

asp.net C#中 sql存储过程创建与应用实例

什么叫存储过程呢? 将常用的或很复杂的工作,预先用sql语句写好并用一个指定的名称存储起来, 那么以后要叫数据库教程提供与已定义好的存储过程的功能相同的服务时,只需调用execute,即可自动完成命令.     存储过程的优点     1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般sql语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度.     2.当对数据库进行复杂操作时(如对多个表进行update,insert,query,delete时),可将此

《Oracle数据库管理与维护实战》—— 2.10 SQL语句的处理过程

2.10 SQL语句的处理过程 Oracle数据库管理与维护实战Oracle数据库是关系数据库,Oracle用SQL语言对数据库进行操作.了解SQL语句的处理过程,能更深一步地了解Oracle的内部运行机制. 2.10.1 SQL 语句的处理过程 Oracle中,所有的SQL语句都分三个阶段进行处理:语法分析.执行.返回结果.无论何种工具(如:Oracle Form .Oracle Reports),都要将语句传递到Oracle进行处理.下面我们简单分析这三个阶段. 2.10.2 分析 分析是处

SQL Server 2005 创建简单的存储过程--总结分析

最近由于工作需要,简单了解了下SQL Server 2005 数据库创建简单的在存储过程.一.首先说明如何创建存储过程: CREATE PROCEDUER my_pro @inputDate varchar ,//声明输入变量 @Result varchar(255) output //声明输出变量 AS declare @variable1 varchar(255)//声明varchar变量 declare @variable2 int //声明整形变量 BEGIN IF ...(条件) BE

sql 存储过程执行过程中的奇怪问题

问题描述 sql 存储过程执行过程中的奇怪问题 某个存储过程,大概如下 b=0,c=0,d=0 如果 a=1 执行下面的 b=b+2;c=c+3;d=d+4 否则 b=b-2;c=c-3;d=d-4 当第一次赋值a=1的时候,存储过程只执行了 b=b+2;d=d+4:而c=c+3;这个语句无执行,所以这个时候c还是0 接着执行a!=0的时候,存储过程执行 b=b-2;c=c-3;d=d-4.所以这个时候c=-3 再执行a=1,存储过程执行 b=b+2;c=c+3;d=d+4.所以这个时候c=0