什么是存储过程? sql语句执行的时候要先编译,然后执行。存储过程就是编译好了的一些sql语句。用的时候直接就可以用了。所以效率会高。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一 存储过程介绍 存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化 后存储在数据库服务器中,使用时只要调用即可。在ORACLE中,若干个 有联系的过程可以组合在一起构成程序包。 使用存储过程有以下的优点: * 存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可 以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的 运算。 * 可保证数据的安全性和完整性。 # 通过存储过程可以使没有权限的用户在控制之下间接地存取数据 库,从而保证数据的安全。 # 通过存储过程可以使相关的动作在一起发生,从而可以维护数据 库的完整性。 * 再运行存储过程前,数据库已对其进行了语法和句法分析,并给出 了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。 由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执 行。 * 可以降低网络的通信量。 * 使体现企业规则的运算程序放入数据库服务器中,以便: # 集中控制。 # 当企业规则发生变化时在服务器中改变存储过程即可,无须修改 任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运 算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序 工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的 运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可 以了,应用程序无须任何变化。 不同数据库存储过程的写法不一,在后面的讲座中将分别介绍ORACLE 和SYBASE存储过程的用法。 二 ORACLE 的存储过程 ORACLE 创建存储过程的语法为: create [or replace] procedure 过程名 参数1 [in|out|in out] 数据类型 [,参数2 [in|out|in out] 数据类型]... {is|as} pl/sql 语句 下面举例说明ORACLE数据库存储过程的写法和用法。 可以建立一个存储过程,每当用户修改数据库的重要数据时,即把 用户的用户名、掌诤筒僮骼嘈图锹枷吕矗?nbsp; create procedure update_log is begin insert into update_log_tab(use_name,update_date,operation) values(user,sysdate,'update' end; 可以在恰当的位置调用这个存储过程来记录用户对表的修改。例如下面在 表sal_comm上建立一个修改触发器,每当用户修改此表后,用户的名称、修改 时间和操作即被记录在了表update_log_tab中: create trigger audit_update after update on sal_comm for each row begin update_log end --三 Sybase的存储过程 尽管Sybase存储过程的功能和写法与ORACLE类似,但他们之间还是 有一定的差别。下面讲述SYBASE的存储过程。 SYBASE可以用CREATE PROCedure命令生成存储过程: CREATE PROCedure 存储过程名 [;number] [[(] @parameter_name datatype [=default] [OUTput] [, @parameter_name datatype [=default] [OUTput]]...[)]] [WITH RECOMPILE] AS SQL_statements 下面是一个查询作者编码、名称和生日的存储过程: create proc p_auths @author_code varchar(10) as select author_code, name, birthdate from auths where author_code=@author_code 下面执行过程p_auths: p_auths @author_code=A00001 在CREATE PROC语句中,可以为参数赋缺省值,该值可以是任何常量。 当用户不提供参数值时,该值便作为参数值提供给过程。 两表数据比较,更新B表状态 求查询语句,在线等 连接不到1433端口,请帮忙 update的问题???? Microsoft SQLserver 2000 standard Edition 服务器组件在此操作系统上不受支持,只有客户端组件才可用于安装.请问各位大哥是怎么回事? 求一货位自动分配SQL算法 数据导入 数据表如何设计 可以脱离光盘用MSDN吗? 一对多表 多条数据如何合并成一条 PB+sqlserver,程序中update一个表时报错:无效的SQL 数据类型 关于管理系统开发的问题。谢谢。
存储过程是由流控制和SQL语句书写的过程,这个过程经编译和优化
后存储在数据库服务器中,使用时只要调用即可。在ORACLE中,若干个
有联系的过程可以组合在一起构成程序包。
使用存储过程有以下的优点:
* 存储过程的能力大大增强了SQL语言的功能和灵活性。存储过程可
以用流控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的
运算。
* 可保证数据的安全性和完整性。
# 通过存储过程可以使没有权限的用户在控制之下间接地存取数据
库,从而保证数据的安全。
# 通过存储过程可以使相关的动作在一起发生,从而可以维护数据
库的完整性。
* 再运行存储过程前,数据库已对其进行了语法和句法分析,并给出
了优化执行方案。这种已经编译好的过程可极大地改善SQL语句的性能。
由于执行SQL语句的大部分工作已经完成,所以存储过程能以极快的速度执
行。
* 可以降低网络的通信量。
* 使体现企业规则的运算程序放入数据库服务器中,以便:
# 集中控制。
# 当企业规则发生变化时在服务器中改变存储过程即可,无须修改
任何应用程序。企业规则的特点是要经常变化,如果把体现企业规则的运
算程序放入应用程序中,则当企业规则发生变化时,就需要修改应用程序
工作量非常之大(修改、发行和安装应用程序)。如果把体现企业规则的
运算放入存储过程中,则当企业规则发生变化时,只要修改存储过程就可
以了,应用程序无须任何变化。
不同数据库存储过程的写法不一,在后面的讲座中将分别介绍ORACLE
和SYBASE存储过程的用法。 二 ORACLE 的存储过程
ORACLE 创建存储过程的语法为:
create [or replace] procedure 过程名
参数1 [in|out|in out] 数据类型
[,参数2 [in|out|in out] 数据类型]...
{is|as} pl/sql 语句
下面举例说明ORACLE数据库存储过程的写法和用法。
可以建立一个存储过程,每当用户修改数据库的重要数据时,即把
用户的用户名、掌诤筒僮骼嘈图锹枷吕矗?nbsp;
create procedure update_log is
begin
insert into update_log_tab(use_name,update_date,operation)
values(user,sysdate,'update'
end;
可以在恰当的位置调用这个存储过程来记录用户对表的修改。例如下面在
表sal_comm上建立一个修改触发器,每当用户修改此表后,用户的名称、修改
时间和操作即被记录在了表update_log_tab中:
create trigger audit_update
after update on sal_comm
for each row
begin
update_log
end
--三 Sybase的存储过程
尽管Sybase存储过程的功能和写法与ORACLE类似,但他们之间还是
有一定的差别。下面讲述SYBASE的存储过程。
SYBASE可以用CREATE PROCedure命令生成存储过程:
CREATE PROCedure 存储过程名 [;number]
[[(] @parameter_name datatype [=default] [OUTput]
[, @parameter_name datatype [=default] [OUTput]]...[)]]
[WITH RECOMPILE]
AS SQL_statements
下面是一个查询作者编码、名称和生日的存储过程:
create proc p_auths @author_code varchar(10)
as
select author_code, name, birthdate
from auths
where author_code=@author_code
下面执行过程p_auths:
p_auths @author_code=A00001
在CREATE PROC语句中,可以为参数赋缺省值,该值可以是任何常量。
当用户不提供参数值时,该值便作为参数值提供给过程。