oracle中procedures是什么意思

oracle中procedures是什么意思,第1张

存储过程

在Oracle中,可以在数据库中定义子程序,这种程序块称为存储过程(Procedure)。它存放在数据字典中,可以在不同用户和应用程序之间共享,可实现程序的优化和重用。使用存储过程的优点是:

(1)过程在服务器端运行,执行速度快;

(2)过程执行一次后代码就驻留在高速缓冲存储器中,在以后的 *** 作中,只需从高速缓冲存储器中调用已编译代码执行即可,可以提高系统性能。

(3) 确保数据库的安全。可以不授权用户直接访问应用程序中的一些表,而是授权用户执行访问这些表的过程。非表的授权用户除非通过过程,否则就不能访问这些表。

(4) 自动完成需要预先执行的任务。过程可以在系统启动时自动执行,而不必在系统启动后再进行手工 *** 作,可以自动完成一些需要预先执行的任务。

基本概念

存储过程和存储函数相当于一个东西。

存储过程在Oracle里叫procedure。

存储过程没有返回值。

存储函数在Oracle里叫function。

存储函数有返回值。

基本语法

create or replace procedure 名字

--create or replace 意思是创建或者替换

as

--可以在此定义参数

begin

语句

end

例:

create  or  replace   procedure   sayhello

as

--说明 相当与declare

begin

dbms_output.put_line('Hello World')

end

基本调用

begin

-- Call the procedure

  sayhello

  sayhello

  sayhello

   end

带参数的存储过程--查询某个员工的年收入

create or replace procedure upmoney(testname in test_procedure.name%type) 

as

begin 

update test_procedure t set t.money = t.money + 1000

 where t.name = testname 

end 

upmoney

特别的地方,参数要指明是输入参数还是输出参数。

存储函数

create or replace function Fupmoney(tname in varchar2)    return number

as     --定义月薪参数

tmoney test_procedure.money%type

begin

  --得到月薪

  select t.money

    into tmoney

    from test_procedure t

  where t.name = tname

  dbms_output.put_line(tmoney*12)

  return(tmoney*12)

end

创建一个多输出参数的存储函数例子

create or replace procedure manyparm(tname in varchar2,

                                    tjob out varchar2,

                                    tmoney out number,

                                    tdept out varchar2)

is

begin

    select t.job,t.money,t.dept

      into tjob,tmoney,tdept

      from test_procedure t

      where t.name = tname

end manyparm

set serveroutput on size 10000

--定义变量,如下定义变量aa,bb,cc

variable aa number

variable bb number

variable cc varchar2(20)

begin

存储过程名 (入参1,...,入参N,:出参1,...,:出参N)

dbms_output.enable --输出激活设置

dbms_output.put_line(:参数N) --输出参数N

end

/

如:

set serveroutput on size 10000

variable aa number--定义number变量时不要定义长度

variable cc varchar2(20)--定义字符串变量要定义长度

begin

sp_tmp_getindex ('503','000','test',0,:aa,:cc)

dbms_output.enable

dbms_output.put_line(:aa) --使用变量时前面要加:

end

/

当没有出参或者入参时,使用下面方法是可以的,但是存在出入参时下面的方法就不行了。

exec 存储过程名


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11411577.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存