- Este tópico contém 11 respostas, 5 vozes e foi atualizado pela última vez 16 anos atrás por
hudsona.
-
AutorPosts
-
1 de dezembro de 2009 às 6:01 pm #91252
Shiono
ParticipantePessoal
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
1 de dezembro de 2009 às 6:04 pm #91253Manoel872
ParticipanteShiono, bom dia!
Coloca o código da sua SP para que possamos analisá-lo.
Att,
Manoel Jr
1 de dezembro de 2009 às 6:29 pm #91254Shiono
ParticipanteCREATE 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
)
ISBEGIN
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;
1 de dezembro de 2009 às 7:03 pm #91259hudsona
ParticipantePorque 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 ?
1 de dezembro de 2009 às 7:06 pm #91260fsitja
ParticipanteEm 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.
1 de dezembro de 2009 às 8:37 pm #91264Shiono
ParticipanteMas o que eu quero fazer é liberar algumas procedures para que alguns usuarios passem os parametros e a proc exiba o resultado na tela
1 de dezembro de 2009 às 8:49 pm #91268rwarstat
ParticipanteExplica melhor o quê tu queres fazer.
1 de dezembro de 2009 às 9:18 pm #91272fsitja
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?
1 de dezembro de 2009 às 9:23 pm #91274Shiono
ParticipanteEu 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
1 de dezembro de 2009 às 9:34 pm #91275hudsona
ParticipanteShiono
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 ?
1 de dezembro de 2009 às 9:53 pm #91277Shiono
ParticipanteEu transformo as querys em procedures e ele usam as procedures sem ter acesso as querys
1 de dezembro de 2009 às 10:05 pm #91279hudsona
ParticipanteShiono,
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.
-
AutorPosts
- Você deve fazer login para responder a este tópico.