//在Oracle中,我们可以从数据字典user_source(视图)中查看对象定义代码;
//我们先来看user_source视图的结构:
desc user_source;
Name Type Nullable Default Comments
---- -------------- -------- ------- --------------------------------------------------------------------
NAME VARCHAR2(30) Y Name of the object
TYPE VARCHAR2(12) Y Type of the object: "TYPE", "TYPE BODY", "PROCEDURE", "FUNCTION",
"PACKAGE", "PACKAGE BODY" or "JAVA SOURCE"
LINE NUMBER Y Line number of this line of source
TEXT VARCHAR2(4000) Y Source text
//
//下面的代码是user_source视图的定义代码:
CREATE OR REPLACE FORCE VIEW "SYS"."USER_SOURCE" ("NAME", "TYPE", "LINE", "TEXT") AS
select o.name,
decode(o.type#,
7, "PROCEDURE",
8, "FUNCTION",
9, "PACKAGE",
11, "PACKAGE BODY",
12, "TRIGGER",
13, "TYPE",
14, "TYPE BODY",
"UNDEFINED"),
s.line,
s.source
from sys.obj$ o,
sys.source$ s
where o.obj# = s.obj#
and ( o.type# in (7, 8, 9, 11, 12, 14) OR
( o.type# = 13 AND o.subname is null))
and o.owner# = userenv("SCHEMAID")
union all
select o.name,
"JAVA SOURCE",
s.joxftlno,
s.joxftsrc
from sys.obj$ o,
x$joxfs s
where o.obj# = s.joxftobn
and o.type# = 28
and o.owner# = userenv("SCHEMAID");
//
//下面是我先定义好的一个procedure:show_employee,
//现在我们来看其定义代码,注意,传递的参数要大写:
set linesize 1000;
set pagesize 1000;
set long 10000;
select type,line||" "||text
from user_source
where name="SHOW_EMPLOYEE";
//
TYPE LINE||""||TEXT
------------ -----------------------------------------------------------------------------------------
PROCEDURE 1 procedure show_employee(empno_in in emp.empno%type)
PROCEDURE 2 as
PROCEDURE 3 v_sign number;
PROCEDURE 4 v_empno emp.empno%type;
PROCEDURE 5 v_ename emp.ename%type;
PROCEDURE 6 v_deptno emp.deptno%type;
PROCEDURE 7 begin
PROCEDURE 8 select 1 into v_sign
PROCEDURE 9 from dual
PROCEDURE 10 where exists(select count(*) from emp where empno=empno_in);
PROCEDURE 11 if v_sign=1 then
PROCEDURE 12 select empno,ename,deptno into v_empno,v_ename,v_deptno
PROCEDURE 13 from emp where empno=empno_in;
PROCEDURE 14 dbms_output.put_line("information of"||empno_in||" are:");
PROCEDURE 15 dbms_output.put_line("empno:"||v_empno||",ename:"||v_ename||",deptno:"||v_deptno);
PROCEDURE 16 end if;
PROCEDURE 17 exception
PROCEDURE 18 when others then
PROCEDURE 19 dbms_output.put_line("no data found");
PROCEDURE 20 end show_employee;
PROCEDURE 21
PROCEDURE 22
//
//我们来执行一下show_employee这个存储过程:
exec show_employee("7788");
information of7788 are:
empno:7788,ename:SCOTT,deptno:20
PL/SQL procedure successfully completed Oracle 分区和面向对象数据库系统的学习Oracle 谨慎授予用户dba权限相关资讯 Oracle教程
- Oracle中纯数字的varchar2类型和 (07/29/2015 07:20:43)
- Oracle教程:Oracle中查看DBLink密 (07/29/2015 07:16:55)
- [Oracle] SQL*Loader 详细使用教程 (08/11/2013 21:30:36)
| - Oracle教程:Oracle中kill死锁进程 (07/29/2015 07:18:28)
- Oracle教程:ORA-25153 临时表空间 (07/29/2015 07:13:37)
- Oracle教程之管理安全和资源 (04/08/2013 11:39:32)
|
本文评论 查看全部评论 (2)
评论声明- 尊重网上道德,遵守中华人民共和国的各项有关法律法规
- 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
- 本站管理人员有权保留或删除其管辖留言中的任意内容
- 本站有权在网站内转载或引用您的评论
- 参与本评论即表明您已经阅读并接受上述条款
| |