SQL必知必会——使用存储过程(十九)

1、存储过程

存储过程就是为以后使用而保存的一条或多条SQL语句。可将其视为皮文件,虽然他们的作用不仅限于批处理。

2、为什么要使用存储过程

  • 通过把处理封装在一个易用的单元中,可以简化复杂的操作
  • 由于不要求反复建立一系列处理步骤,因而保证了数据的一致性。如果所有开发人员和应用程序都使用同一存储过程,则所使用的代码时相同的。这一点的延伸就是防止错误,需要执行的步骤越多,出错的可能性就越大。
  • 简化对变动的管理。如果表名,列名或业务逻辑有变化,那么只需要更改存储过程的代码。使用它的人员甚至不需要知道这些变化。这点的延伸就是安全性。通过存储过程限制对基础数据的访问,减少了数据讹误的机会
  • 因此存储过程通常以编译过的形式存储,所以DBMS处理命令所需的工作量少,提高了性能
  • 存在一些只能用在单个请求中的SQL元素和特性,存储过程可以使用他们来编写功能更强更灵活的代码
    换句话说,使用存储过程有三个主要的好处,即简单,安全,高性能

缺点:

  • 不同DBMS中存储过程语法有所不同。事实上,编写真正的可移植存储过程几乎是不可能的。
  • 一般来说,编写存储过程比编写基本SQL语句复杂,需要更高的技能,更丰富的经验。

3、执行存储过程

EXCUTE Addnewproduct ('JTS01',
							'Stuffed Eiffel Tower',
							6.49
							'plush stuffed toy with the next la tour eiffel in red white and blue'
	
);
--这里执行一个名为addnewproduct的存储过程,将一个新产品添加到product表中。andnewproduct有四个参数,分别是:
供应商id(vendors表的主键),产品名,价格和描述。

4、创建存储过程

CREATE PROCEDUKE MailingListCount(
	Listcount out integer
)
is
v_rows integer;
begin
	select count(*) into v_rows
	from customers
	where not cust_email is null;
	listcount :=v_rows;
	end;
	--这个存储过程有一个名为listcount的参数。此参数从存储过程返回一个值而不是传递一个值给存储过程。
	关键字out用来指示这种行为。oracle支持in(传递值给存储过程),out(从存储过程返回值,如这里),
	inout(既传递值给存储过程也从存储过程返回值)类型的参数。存储过程的代码再begin和end语句中,
	这里执行一条简单的select语句,他检索具有游客地址的顾客。
	然后用检索出的行数设置ListCount(要传递的输出类型)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值