Retornar TYpe (tablet) como parâmetros de saída.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

Boa tarde pessoal!

Tenho uma procedure no Oracle com várias funções de cálculos, tipo simulador. Então, quero montar uma type com parâmetros de saída com a leitura destes dados e trazer os resultados destas funções em tempo real, pois quero exibir como linhas de saída em um front ( tela web). Já criei os types objectos e table. Porém, estou com dificuldades em montar, pois não conheço bem Type. Alguém pode me ajudar? Obrigada
exemplos?
Avatar do usuário
dr_gori
Moderador
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

Como é a estrutura do TYPE que você quer criar ?
Pra gente ter uma idéia...
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

Obrigada pelo retorno!

Vou passar a de uma estrutura simples como exemplo;
Cada coluna se refere ao resultado de uma função.

Selecionar tudo

Create or replace  Sml_motor is object (
  Valor_Previsto  Number,
  Valor_simulado Number,
  Qtd_simulado Number,
  Valor_Iss Number,
 );
Obrigada
Avatar do usuário
dr_gori
Moderador
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

Um exemplo simples:

Selecionar tudo

CREATE TYPE demo_typ1 AS OBJECT (a1 NUMBER, a2 NUMBER);
Aqui tem muita coisa sobre isso:
https://docs.oracle.com/cd/E11882_01/ap ... LNPLS01375

Aqui tem uns exemplos bem legais para o caso de você precisar VALIDAR as informações. (Criando um TYPE BODY, acho que você não vai precisar disso, mas enfim...)
https://www.guru99.com/object-types-pl-sql.html
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

Bom dia dr_Grori!

Dei uma olhada nos links, como disse que não conheco bem Type, de uma olhada neste meu código por gentileza.

Obrigada

Selecionar tudo

create or replace PROCEDURE proc_motor ( p_ISS            IN   number,
                                                                  p_COFINS     IN   number,
                                                                  P_IR             IN   number,
                                                                  P_IMPOSTO   IN   number,
                                                                  P_TAXA        IN   number  ) AS
                                         
  --Retorno (Saida Funções Calculadas)                                       
  v_num1  NUMBER := 0;   
  v_num2  NUMBER := 0;
  v_num3  NUMBER := 0; 

  -- type que receberá o retorno (Saida Funções Calculadas)
  type tret_motor is record ( v_num1  number,
                                           v_num2  number,
                                           v_num3  number);
  vretorno tret_motor;                             

  -- função que retorna os valores (Saida Funções Calculadas)
  function fun_ret_motor
  return tret_motor
  is
     vret_motor tret_motor;
  begin

    --Retorno das funções-----------
    --FUNCTION 1
    v_num1 := fn_ISS( p_iss , p_COFINS );

    --FUNCTION 2
    v_num2 := fn_ir( P_IR, P_IMPOSTO);

    --FUNCTION 3
     v_num3 := fn_taxa( P_TAXA, P_IMPOSTO, p_ISS );
     
    --Agora alimentamos o v_row a ser retornado
    vret_motor.v_num1 := v_num1;
    vret_motor.v_num2 := v_num2;
    vret_motor.v_num3 := v_num3;
    --
    return vret_motor;
  end fun_ret_motor;                                                       
  --                     
begin
  -- Chamada da função
  vretorno := fun_ret_motor;
  -- Print dos dados
  dbms_output.put_line('FUNCTION 1: '||vretorno.v_num1);
  dbms_output.put_line('FUNCTION 2: '||vretorno.v_num2);
  dbms_output.put_line('FUNCTION 3: '||vretorno.v_num3);

end;
Avatar do usuário
dr_gori
Moderador
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

Então...seu código ta funcionando?
É isso que você queria?
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

Boa noite dr_gori!

Sim, esta funcionando! Te enviei pois sei que você é bem experiente no assunto, e tecnicamente, poderia perceber alguma coisa que possa ser melhorado no código. A única coisa que vou acrescentar agora, será o type de entrada de parâmetros.

Muito obrigada!
Responder
  • Informação
  • Quem está online

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