Blog de Tecnologia desenvolvido por Thiago Campos Pereira

Blog criado para documentar e disseminar o conhecimento tecnológico adquirido por Thiago Campos Pereira e colaboradores.

quarta-feira, dezembro 29, 2004

Oracle (PL SQL) – Cursor dinâmico no Oracle

Abaixo está o código de como criar um cursor dinâmico no Oracle:

DECLARE
source_cursor integer;
fNumber_Buffer number(10);
fnumber_buffer2 NUMBER(10);
fnumber_buffer3 VARCHAR2(100);
ssql VARCHAR2(2000);
wrc INTEGER;
BEGIN
ssql := 'SELECT cod_banco, cod_agbco FROM amdsepdbs0100.agencia';
source_cursor := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.parse(source_cursor, ssql, DBMS_SQL.v7);
dbms_sql.define_column(source_cursor,1,fNumber_Buffer);
dbms_sql.define_column(source_cursor,2,fnumber_buffer2);
wrc := DBMS_SQL. execute(source_cursor);
LOOP
IF DBMS_SQL.fetch_rows(source_cursor) > 0
THEN
dbms_sql.column_value(source_cursor,1,fNumber_Buffer);
DBMS_SQL.column_value(source_cursor, 2, fnumber_buffer2);
insert into AMDSEPDBS0100.AGENCIA_TMP
values (fNumber_Buffer, fNumber_Buffer2);
ELSE
EXIT;
END IF;
END LOOP;
commit;
END;

1 Comentários:

Às 09 novembro, 2006 11:00 , Blogger DG disse...

Olá Thiago,
Criei uma procedure no oracle9i com um cursor dinamico, como segue o exemplo a baixo.

c_create := dbms_sql.open_cursor;

v_create := create table table_teste
as
select sysdate from sys.dual;

dbms_sql.parse(c_create,v_create,dbms_sql.V7);

Ocorree que: qdo tento executar a procedure da erro de (insufficient privileges), so que
estopu com ususario dba do banco.
Fiz um teste trocando o create pelo insert e executou com sucesso.
Vc sabe me dizer o que está aocntecendo, se o problema é no comando create ou na versao do 9i?

Obrigada
DG

 

Postar um comentário

Assinar Postar comentários [Atom]

<< Página inicial