快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

和记娱乐在线官网:通过实例讲解由浅入深学会存储过程存储过程



什么是存储历程呢?

定义:

将常用的或很繁杂的事情,预先用SQL语句写好并用一个指定的名称存储起来, 那么今后要叫数据库供给与已定义好的存储历程的功能相同的办事时,只需调用execute,即可自动完成敕令。

讲到这里,可能有人要问:这么说存储历程便是一堆SQL语句而已啊?

Microsoft公司为什么还要添加这个技巧呢?

那么存储历程与一样平常的SQL语句有什么差别呢?

存储历程的优点:

1.存储历程只在创造时进行编译,今后每次履行存储历程都不需再从新编译,而一样平常SQL语句每履行一次就编译一次,以是应用存储历程可前进数据库履行速率。

2.当对数据库进行繁杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此繁杂操感化存储历程封装起来与数据库供给的事务处置惩罚结合一路应用。

3.存储历程可以重复应用,可削减数据库开拓职员的事情量

4.安然性高,可设定只有某此用户才具有对指定存储历程的应用权

存储历程的种类:

1.系统存储历程:以sp_开首,用来进行系统的各项设定.取得信息.相关治理事情,如 sp_help便是取得指定工具的相关信息

2.扩展存储历程 以XP_开首,用来调用操作系统供给的功能

exec master..xp_cmdshell 'ping 10.8.16.1'

3.用户自定义的存储历程,这是我们所指的存储历程

常用款式

Create procedure procedue_name

[@parameter data_type][output]

[with]{recompile|encryption}

as

ql_statement

解释:

output:表示此参数是可传回的

with {recompile|encryption}

recompile:表示每次履行此存储历程时都从新编译一次

encryption:所创建的存储历程的内容会被加密

如:

表book的内容如下

编号 书名 价格

001 C说话入门 $30

002 PowerBuilder报表开拓 $52

实例1:查询表Book的内容的存储历程

create proc query_book

as

select * from book

go

exec query_book

实例2:加入一条记录到表book,并查询此表中所有册本的总金额

Create proc inse和记娱乐在线官网rt_book

@param1 char(10),@param2 varchar(20),@param3 money,@param4 money output

with encryption ---------加密

as

insert book(编号,书名,价格) Values(@param1,@param2,@param3)

select @param4=sum(价格) from bo和记娱乐在线官网ok

go

履行例子:

declare @total_price money

exec insert_book '003',和记娱乐在线官网9;Delphi 控件开拓指南',$100,@total_price

print '总金额为'+convert(varchar,@total_price)

go

存储历程的3种传回值:

1.以Return传回整数

2.以output款式传回参数

3.Recordset

传回值的差别:

output和return都可在批次程式顶用变量接管,而recordset则传回到履行批次的客户端中

实例3:设有两个表为Product,Order,其表内容如下:

Product

产品编号 产品名称 客户订数

001 钢笔 30

002 羊毫 50

003 铅笔 100

Order

产品编号 客户名 客户订金

001 南山区 $30

002 罗湖区 $50

003 宝安区 $4

请实现按编号为连接前提,将两个表连接成一个临时表,该表只含编号.产品名.客户名.订金.总金额,

总金额=订金*订数,临时表放在存储历程中

代码如下:

Create proc temp_sale

as

select a.产品编号,a.产品名称,b.客户名,b.客户订金,a.客户订数* b.客户订金 as总金额

into #temptable from Product a inner join Order 和记娱乐在线官网b on a.产品编号=b.产品编号

if @@error=0

print 'Good'

else

print 'F和记娱乐在线官网ail'

go

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: