Pular para o conteúdo
  • Este tópico contém 11 respostas, 5 vozes e foi atualizado pela última vez 16 anos atrás por hudsona.
Visualizando 12 posts - 1 até 12 (de 12 do total)
  • Autor
    Posts
  • #91252
    Shiono
    Participante

      Pessoal

      Bom dia estou criando uma Stored Procedure que tem um comando select.
      Mas da erro dr criação se for um select into não da erro por que isto acontece ?

      O erro ocorre no momento em que estou criando

      #91253
      Manoel872
      Participante

        Shiono, bom dia!

        Coloca o código da sua SP para que possamos analisá-lo.

        Att,

        Manoel Jr

        #91254
        Shiono
        Participante

          CREATE OR REPLACE PROCEDURE siga.Usp_ExpPed_LM
          (
          p_filial IN siga.sf1010.f1_filial%TYPE
          ,p_fornece IN siga.sf1010.f1_fornece%TYPE
          ,p_loja IN siga.sf1010.f1_loja%TYPE
          ,p_doc IN siga.sf1010.f1_doc%TYPE
          ,p_emissao IN siga.sf1010.f1_emissao%TYPE
          )
          IS

          BEGIN
          select * from siga.sf1010 f1
          where f1.f1_doc = p_doc
          and f1.f1_filial = p_filial
          and f1.f1_fornece = p_fornece
          and f1.f1_loja = p_loja
          and f1.f1_doc = p_doc
          and f1.f1_emissao = p_emissao;

          END;

          #91259
          hudsona
          Participante

            Porque dentro de uma procedure, você não pode dar um select solto, você tem que armazenar esse “resultado” em algum lugar, por isso quando se usa um select dentro de um bloco PL/SQL é obrigatorio o uso da clausula INTO, já pensou em usar um CURSOR ?

            #91260
            fsitja
            Participante

              Em PL/SQL você não pode usar um select “solto”. Ou você faz o select into uma ou mais variáveis (para várias colunas) ou declara um cursor e faz o tratamento das várias linhas em loop.

              Tenha em mente que select into só pode ser usado em SQLs que você sabe com certeza que ele só retornará uma linha. Se retornar mais do que uma linha será disparado exception.

              #91264
              Shiono
              Participante

                Mas o que eu quero fazer é liberar algumas procedures para que alguns usuarios passem os parametros e a proc exiba o resultado na tela

                #91268
                rwarstat
                Participante

                  Explica melhor o quê tu queres fazer.

                  #91272
                  fsitja
                  Participante

                    [quote=”Shiono”:9695ejod]Mas o que eu quero fazer é liberar algumas procedures para que alguns usuarios passem os parametros e a proc exiba o resultado na tela[/quote]

                    Procedure não é ferramenta de front-end de usuário. O que o usuário acessa para ver os dados?

                    #91274
                    Shiono
                    Participante

                      Eu herdei esta bagunça, os meus usuarios fazem consultas rodando querys no banco, ai eu criei um usuario somente para selects, substitui algumas querys por views, eu não tenho forms e reports, nos estamos migrando um erp. ai isto ira acabar.

                      Hoje eles usam um ferramenta chamada Toad para fazer as consultas

                      #91275
                      hudsona
                      Participante

                        Shiono

                        Você quer que os seus usuários tenham acesso a somente algumas procedures, não todas, e que eles passem os parâmetros e tenham acesso a uma determinada query , é isso ?

                        #91277
                        Shiono
                        Participante

                          Eu transformo as querys em procedures e ele usam as procedures sem ter acesso as querys

                          #91279
                          hudsona
                          Participante

                            Shiono,

                            Se você quer realmente armazenar as querys nas procedures, você vai precisar de cursores, pois os resultados vão retornar varias linhas, mas pense na hipotese de usar views, e ainda já ouviu falar do APEX ?
                            

                            È uma solução free da oracle e acho que iria atender suas necessidades perfeitamente. você iria criar ” front-end ” rapidamente, como solução provisória enquanto o projeto do erp que você falou não fica pronto.

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