Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #86083
    thianolima
    Participante

      Bom pessoal ja postei em um outro post aqui q sou novato no mundo oracle pois trabalho a 3 anos com firebird e a empresa esta migrando para oracle agora. A minha duvida e a seguinte eu sempre quando precisei fazer selects mais complexas aonde eu precisava fazer muitos calculos e varias sub-selects no firebird, criava um SPC com um FOR..DO com a select principal e com os dados da mesma eu saia fazendo o que precisava e guardando em variaveis de saida para cada passagem do loop eu dar um SUSPEND para pegar esses dados em ums futura select usando esta SPC.
      De cara ja vi q SPC no oracle nao retorna nada e para tal funcao eu preciso usar uma function q ate achei legal essa maneira dele separar igual no delphi.
      Mas o meu problema comeca qdo eu tento fazer algo igual fazia no firebird ou seja criar uma SPC q faca varias selects no banco e me retorne dados como uma tabela.
      Nao sei se ficou claro oq estou tentando explicar aqui, acho q se alguem trabalha com firebird ou interbase aq no forum deve ter me entendido, e dai estou a procura de uma solucao para saber como e feito tais rotinas q sao tao comuns no mundo firebird no oracle.

      #86088
      Rodrigo Mesquita
      Participante

        Não sei se entendi muito o seu problema. Mais acredito que com um FOR vc resolva:

        Ex:

        Begin
        For I In (Select COLUNA1,COLUNA2,COLUNA3..
        From TABELA1,TABELA2…
        WHERE CAMPO1 = CAMPO2) Loop
        /*CORPO DO PROCEDIMENTO*/
        End Loop;
        End;

        vc utiliza o i.nomedacoluna para pegar o valor das colunas no select.

        #86100
        thianolima
        Participante

          ok eu consigo fazer esse loop agora o problema e como recuperar os dados do loop por exemplo no firebird eu faco um SPC parecido com oq esta abaixo


          AS
          DECLARE VARIABLE NOME VARCHAR(50)
          BEGIN
          FOR
          SELECT NOME FUNCIONARIO
          INTO NOME;
          DO
          BEGIN
          SUSPEND;
          END
          END

          Eu consigo com uma select acessar os dados retornados de uma SPC como por exemplo abaixo:


          SELECT * FROM PRC_FUNCIONARIO()

          PRC_FUNCIONARIO seria o nome da SPSC exemplificada acima. Como eu faria algo desse tipo com function ou procedure no oracle?

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.