set serveroutput on
declare
v_descr varchar2(50);
v_cursor integer;
v_tabela varchar2(50);
v_retorno integer;
v_sql varchar2(100);
begin
v_tabela := 'EMP';
v_cursor := dbms_sql.open_cursor;
v_sql := 'select * from '||v_tabela;
dbms_sql.parse(v_cursor,v_sql,1);
dbms_sql.define_column(v_cursor,2,v_descr,50); --o 2 é a sequencia do campo na query, o 50 o tamanho
v_retorno := dbms_sql.execute(v_cursor);
while dbms_sql.fetch_rows(v_cursor) <> 0 loop
dbms_sql.column_value(v_cursor, 2 ,v_descr); --o 2 é a sequencia do campo na query
dbms_output.put_line(v_descr);
end loop;
dbms_sql.close_cursor(v_cursor);
end;
/
SMITE
ALLEN
WARD
JONES
MARTIN
BLAKE
SCOTT
TURNER
ADAMS
JAMES
FORD
PL/SQL procedure successfully completed.
[Dica] SQL dinâmico
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Pequeno exemplo de um SQL dinâmico:
-
- Rank: Estagiário Júnior
- Mensagens: 1
- Registrado em: Seg, 21 Fev 2005 11:04 am
- Localização: SP
Cleiton Ramos
Analista Programador Oracle
Analista Programador Oracle
Amigos, bom dia.
Alguém sabe como tratar uma exception dentro de um execute immediate ?? O comando que estou utilizando é o select e retorno o valor para uma variavel into.
ex:
[code]execute immediate ( select cd_param from empresa
where id_empresa = '||wempresa||')
into wcd_param;[/code]
como faço para tratar uma exception do tipo no_data_found ?? Lembrando que utilizando o execute immediate a sequencia dos comandos são diferentes do que das rotinas normais.
Grato :
:D
Alguém sabe como tratar uma exception dentro de um execute immediate ?? O comando que estou utilizando é o select e retorno o valor para uma variavel into.
ex:
[code]execute immediate ( select cd_param from empresa
where id_empresa = '||wempresa||')
into wcd_param;[/code]
como faço para tratar uma exception do tipo no_data_found ?? Lembrando que utilizando o execute immediate a sequencia dos comandos são diferentes do que das rotinas normais.
Grato :
:D
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Muito simples friend!
Basta colocar o exception fora do execute immediate. Veja abaixo:
Mudei a WHERE dummy='Y' pra não retornar nenhuma linha!
Basta colocar o exception fora do execute immediate. Veja abaixo:
SQL> SET SERVEROUTPUT ON
SQL>
SQL>
SQL> DECLARE
2 A VARCHAR2(100);
3 BEGIN
4 EXECUTE IMMEDIATE ('SELECT ''DEU_CERTO'' FROM DUAL WHERE DUMMY=''X''') INTO A;
5 DBMS_OUTPUT.PUT_LINE(A);
6
7 EXCEPTION WHEN NO_DATA_FOUND THEN
8 DBMS_OUTPUT.PUT_LINE('CAIU NO EXCEPTION');
9 END;
10 /
DEU_CERTO
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL>
SQL>
SQL> DECLARE
2 A VARCHAR2(100);
3 BEGIN
4 EXECUTE IMMEDIATE ('SELECT ''DEU_CERTO'' FROM DUAL WHERE DUMMY=''Y''') INTO A;
5 DBMS_OUTPUT.PUT_LINE(A);
6
7 EXCEPTION WHEN NO_DATA_FOUND THEN
8 DBMS_OUTPUT.PUT_LINE('CAIU NO EXCEPTION');
9 END;
10 /
CAIU NO EXCEPTION
PL/SQL procedure successfully completed.
SQL>
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 14 visitantes