receber valor da sequencia

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
informatica@cofina.com.br
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 31
Registrado em: Seg, 08 Fev 2010 10:59 am
Localização: BOM JESUS DOS PERDÕES - SP

criei uma trigger para atualizar valores de uma sequencia.
criei tb um procedure para fazer o comando de insert em uma tabela.
Nesta procedure de isert não passo o valor da sequencia porque é feito automaticamente pela trigger mas preciso gostaria que esta procedure me retornasse o valor que foi atribuido apos o insert nesta tabela.
como Fazer isso:

COMANDO PROCEDURE
INSERT INTO CLIENTES(NOME)VALUES('WILSON');

não passo o valor do codigo porque isso quem vai fazer é a trigger, más preciso que este valor seja informado.

Obrigado
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother, beleza?

Cara, num entendi direito se você tem uma dúvida, se precisa ou não passar o código.

Caso tenha uma TRIGGER (por exemplo, de BEFORE INSERT), contendo o novo valor para esse campo

Selecionar tudo

:NEW.CODIGO := VALOR_DA_SEQUENCE
, daí você não precisa passar o valor que, o banco irá se responsabilizar por isso.

Seria isso? Ou, precisa de algum exemplo?

Caso necessite, se procurar por "TRIGGER" ou "SEQUENCE", com certeza irá encontrar exemplos interessantes aqui no fórum mesmo.
informatica@cofina.com.br
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 31
Registrado em: Seg, 08 Fev 2010 10:59 am
Localização: BOM JESUS DOS PERDÕES - SP

isso eu já entendi e esta funcionando o que eu quero é mostrar na tela do usuário qual foi o valor atribuido ao cliente que ele acabou de cadastrar ao executar a procedure.
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Bom, vou entender que está falando de Forms, pois num foi citada ferrramenta, banco, etc...

No bloco:
DML Returning Value = yes


*** Tópico movido para Forms***
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Pelo que entendi para resolver isso em PL/SQL seria usando a cláusula RETURNING no insert em conjunto com a trigger:

Selecionar tudo

SQL> set serveroutput on
SQL> create table cliente (cod_cliente number(10), nome varchar2(100));
 
Table created
SQL> create sequence sq_cliente start with 1
  2                             increment by 1
  3                             nocycle
  4                             nocache;
 
Sequence created
SQL> create or replace trigger tg_cliente before insert on cliente for each row
  2  begin
  3    select sq_cliente.nextval
  4      into :new.cod_cliente
  5      from dual;
  6  end;
  7  /
 
Trigger created
SQL> create or replace procedure teste_insert(p_nome_cliente in varchar2,
  2                                           cod_cliente_inserido out number) is
  3    v_cod_cliente number;
  4  begin
  5    insert into cliente (nome)
  6      values (p_nome_cliente)
  7      returning cod_cliente into v_cod_cliente;
  8    cod_cliente_inserido := v_cod_cliente;
  9  end;
 10  /
 
Procedure created
SQL> declare
  2    v_cod_cli number;
  3    v_nome varchar2(100);
  4  begin
  5    v_nome := 'WILSON';
  6    teste_insert(v_nome, v_cod_cli);
  7    dbms_output.put_line('Código do cliente = ' || v_cod_cli);
  8    v_nome := 'JOHN';
  9    teste_insert(v_nome, v_cod_cli);
 10    dbms_output.put_line('Código do novo cliente = ' || v_cod_cli);
 11    commit;
 12  end;
 13  /
 
Código do cliente = 1
Código do novo cliente = 2
 
PL/SQL procedure successfully completed
SQL> select * from cliente;
 
COD_CLIENTE NOME
----------- --------------------------------------------------------------------------------
          1 WILSON
          2 JOHN
 
SQL> 
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 30 visitantes