Oracle存储过程

-----------------------------------------------

A,使用存储过程参数

-----------------------------------------------

定义语法:

CREATE [OR REPLACE] PROCEDURE procedure_name
    (arg1 [mode1] type1 [default  default_value], arg2 [mode2] type2, ...)
IS [AS]
PL/SQL Block;

说明:

在定义参数时,只能指定数据类型,不能指定长度。

参数类型为IN(默认),OUT,IN OUT三种。

使用集合类型作为返回值时,需要使用自定义的嵌套表类型或者VARRAY类型。

 

存储过程示例:

CREATE OR REPLACE PROCEDURE out_time
IS
BEGIN
   DBMS_SESSION.set_nls ('NLS_DATE_FORMAT', '''YYYY-MM-DD HH24:MI:SS''');
   DBMS_OUTPUT.put_line (SYSDATE);
END;
/

 

-----------------------------------------------

B,调用存储过程

-----------------------------------------------

在SQL*Plus中调用过程时,需要使用CALL或者EXECUTE命令;而在PL/SQL块中过程可以直接引用。

exec procedure_name()

 

参数传递:位置传递,名称传递,组合传递。

exec procedure_name('arg1_value',  arg2=>'arg2_value')

 

 

-----------------------------------------------

C,维护存储过程

-----------------------------------------------

第一,删除过程

DROP PROCEDURE procedure_name;

第二,显示编译错误

方法一:执行命令

SHOW errors

方法二:查询数据字典

SELECT *
  FROM user_errors;

第三,确定过程状态

当使用ALTER  TABLE命令改变表结构时,会将基本该表的子程序状态改为INVALID状态。使用下面的语句可以查询对象的状态,

SELECT *
  FROM user_objects;

第四,编译过程

为了避免过程的运行时错误,应该重新编译处于INVALID状态的过程。

ALTER   PROCEDURE  procedure_name  COMPILE;

编译函数:

ALTER   FUNCTION   procedure_name  COMPILE;

第五,查看过程代码

查询数据字典USER_SOURCE,可以获得子程序名称以及源代码。

SELECT *
  FROM user_source t
WHERE t.NAME = 'OUT_TIME';

posted on 2009-03-25 10:52 JavaBegger 阅读(157) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航:
 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜