Using Oracle dbms_sql The Oracle docs note the following a bout the dbms_sql package here.
"The
DBMS_SQL package provides an interface to use dynamic SQL to parse any data manipulation language (DML) or data definition language (DDL) statement using PL/SQL."
Here are
some examples how dbms_sql can be used.
Example 1:
CREATE OR REPLACE PROCEDURE "SYSTEM"."ORA$_SYS_REP_AUTH"
as
i integer;
x integer;
begin
i:=dbms_sql.open_cursor;
dbms_sql.parse(i,'GRANT SELECT ON
SYSTEM.repcat$_repschema TO SYS ' ||
'WITH GRANT OPTION',dbms_sql.v7);
x:=dbms_sql.execute(i);
dbms_sql.parse(i,'GRANT SELECT ON
SYSTEM.repcat$_repprop TO SYS ' ||
'WITH GRANT OPTION',dbms_sql.v7);
x:=dbms_sql.execute(i);
dbms_sql.parse(i,'GRANT SELECT ON
SYSTEM.def$_aqcall TO SYS ' ||
'WITH GRANT OPTION',dbms_sql.v7);
x:=dbms_sql.execute(i);
dbms_sql.parse(i,'GRANT SELECT ON
SYSTEM.def$_calldest TO SYS ' ||
'WITH GRANT OPTION',dbms_sql.v7);
x:=dbms_sql.execute(i);
dbms_sql.parse(i,'GRANT SELECT ON
SYSTEM.def$_error TO SYS ' ||
'WITH GRANT OPTION',dbms_sql.v7);
x:=dbms_sql.execute(i);
dbms_sql.parse(i,'GRANT SELECT ON
SYSTEM.def$_destination TO SYS ' ||
'WITH GRANT OPTION',dbms_sql.v7);
x:=dbms_sql.execute(i);
dbms_sql.close_cursor(i);
exception when others then
if dbms_sql.is_open(i) then
dbms_sql.close_cursor(i);

cur:=DBMS_SQL.OPEN_CURSOR;
sql_com:='ALTER SYSTEM FLUSH SHARED_POOL';
DBMS_SQL.PARSE(cur,sql_com,dbms_sql.v7);
row_proc:=DBMS_SQL.EXECUTE(cur);
DBMS_SQL.CLOSE_CURSOR(cur);
OPEN get_time;
FETCH get_time INTO todays_date;
INSERT INTO dba_running_stats VALUES
(
'Flush of Shared Pool',1,35,todays_date,0
);
COMMIT;
END IF;
END flush_it;
For more information on dbms_sql view the
following articles:
Using the DBMS_SQL Package
DBMS_SQL Package
|