Oracle PL/SQL/System Tables Views/user source

Материал из SQL эксперт
Перейти к: навигация, поиск

Check user procedure status and text

   <source lang="sql">
  

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>


 </source>
   
  


Get code from user_source table

   <source lang="sql">
 

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>

 </source>
   
  


Query user_source table for a stored procedure name and procedure type

   <source lang="sql">
 

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>

 </source>