Oracle PL/SQL/System Tables Views/user source
Check user procedure status and text
SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE Simple AS
2 v_Counter NUMBER;
3 BEGIN
4 v_Counter := 7;
5 END Simple;
6 /
Procedure created.
SQL>
SQL> COLUMN object_name format a20
SQL> COLUMN line format 9999
SQL> COLUMN position format 99999
SQL> COLUMN text format a59
SQL>
SQL>
SQL>
SQL> SELECT object_name, object_type, status
2 FROM user_objects
3 WHERE object_name = "SIMPLE";
OBJECT_NAME OBJECT_TYPE STATUS
-------------------- ------------------- ----------
SIMPLE PROCEDURE VALID
1 row selected.
SQL>
SQL> SELECT text FROM user_source WHERE name = "SIMPLE" ORDER BY line;
TEXT
-----------------------------------------------------------
PROCEDURE Simple AS
v_Counter NUMBER;
BEGIN
v_Counter := 7;
END Simple;
5 rows selected.
SQL>
SQL> SELECT line, position, text FROM user_errors WHERE name = "SIMPLE" ORDER BY sequence;
no rows selected
SQL>
SQL> CREATE OR REPLACE PROCEDURE Simple AS
2 v_Counter NUMBER;
3 BEGIN
4 v_Counter := 7
5 END Simple;
6 /
Warning: Procedure created with compilation errors.
SQL>
SQL>
SQL> SELECT text FROM user_source WHERE name = "SIMPLE" ORDER BY line;
TEXT
-----------------------------------------------------------
PROCEDURE Simple AS
v_Counter NUMBER;
BEGIN
v_Counter := 7
END Simple;
5 rows selected.
SQL>
Get code from user_source table
SQL>
SQL> prompt set define off
set define off
SQL> select decode( type||"-"||to_char(line,"fm99999"),
2 "PACKAGE BODY-1", "/"||chr(10),
3 null) ||
4 decode(line,1,"create or replace ", "" ) ||
5 text text
6 from user_source
7 where name = upper("&1")
8 order by type, line;
Enter value for 1: prompt /
SQL> prompt set define on
set define on
SQL>
SQL> set feedback on
SQL> set heading on
SQL> set termout on
SQL> set linesize 100
SQL>
Query user_source table for a stored procedure name and procedure type
SQL>
SQL> create table myLogTable(
2 username varchar2(30),
3 date_time timestamp,
4 message varchar2(4000) );
Table created.
SQL>
SQL> create or replace procedure log_message( p_message varchar2 ) as
2 pragma autonomous_transaction;
3 begin
4 insert into myLogTable( username, date_time, message )
5 values ( user, current_date, p_message );
6 commit;
7 end log_message;
8 /
Procedure created.
Procedure created.
SQL> select text
2 from user_source
3 where name = "LOG_MESSAGE"
4 and type = "PROCEDURE"
5 order by line;
TEXT
-----------------------------------------------------------------------------------------
procedure log_message( p_message varchar2 ) as
pragma autonomous_transaction;
begin
insert into myLogTable( username, date_time, message )
values ( user, current_date, p_message );
commit;
end log_message;
7 rows selected.
SQL>
SQL> drop table myLogTable;
Table dropped.
SQL>
SQL>