El siguiente ejemplo, le ayudará a poder leer el contenido de un campo de tipo LONG en una tabla de la base de datos, ingresando su contenido en una tabla temporal del sistema, la cuál podra consultar durante su sessión de trabajo.
Una vez que salga de la sessión, la tabla dejará de existir.
Se utiliza para este ejemplo, la tabla dba_triggers del diccionario de la base de datos, del cuál vamos a extraer el código fuente de los triggers de un esquema específico.
set pagesize 200
set linesize 220
drop table temp_validacion;
create global temporary table temp_lectura( table_owner varchar2(30),
table_name varchar2(30), trigger_name varchar2(30), data varchar2(4000));
declare
cursor my_cursor is
select table_owner, table_name, trigger_name, trigger_body
from dba_triggers
where table_owner='&ESQUEMA';
V_OWNER VARCHAR2(30);
V_TABLE_NAME VARCHAR2(30);
V_COLUMN_NAME VARCHAR2(30);
my_var varchar2(32000);
begin
open my_cursor;
loop
fetch my_cursor into V_OWNER, V_TABLE_NAME, V_COLUMN_NAME,my_var;
exit when my_cursor%notfound;
my_var := substr(my_var,1,4000);
insert into temp_lectura values (V_OWNER, V_TABLE_NAME, V_COLUMN_NAME, my_var);
end loop;
close my_cursor;
end;
/
Una vez que salga de la sessión, la tabla dejará de existir.
Se utiliza para este ejemplo, la tabla dba_triggers del diccionario de la base de datos, del cuál vamos a extraer el código fuente de los triggers de un esquema específico.
set pagesize 200
set linesize 220
drop table temp_validacion;
create global temporary table temp_lectura( table_owner varchar2(30),
table_name varchar2(30), trigger_name varchar2(30), data varchar2(4000));
declare
cursor my_cursor is
select table_owner, table_name, trigger_name, trigger_body
from dba_triggers
where table_owner='&ESQUEMA';
V_OWNER VARCHAR2(30);
V_TABLE_NAME VARCHAR2(30);
V_COLUMN_NAME VARCHAR2(30);
my_var varchar2(32000);
begin
open my_cursor;
loop
fetch my_cursor into V_OWNER, V_TABLE_NAME, V_COLUMN_NAME,my_var;
exit when my_cursor%notfound;
my_var := substr(my_var,1,4000);
insert into temp_lectura values (V_OWNER, V_TABLE_NAME, V_COLUMN_NAME, my_var);
end loop;
close my_cursor;
end;
/
Consulta sobre la tabla creada:
SQL> select * from temp_lectura where rownum <>
Muy bien, pero qué pasa si no tengo permisos de crear o borrar tablas, solamente SELECT ANY TABLE??
ResponderEliminarCómo podría extraer datos desde una simple sentencia SELECT?
atte mbarrantes