- Este tópico contém 6 respostas, 2 vozes e foi atualizado pela última vez 15 anos, 4 meses atrás por
augustoca.
-
AutorPosts
-
4 de novembro de 2010 às 4:29 pm #96735
augustoca
ParticipanteBom dia pessoal,
É possível adicionar uma function antes de minha query, e dentro da query chamar esta function:
ex:
FUNCTION fnivelSubGrupo(x,y,z)
. . .
END fnivelSubGrupo;SELECT fnivelSubGrupo(1,2,1) TABLELA.TESTE
FROM TABELA
4 de novembro de 2010 às 4:37 pm #96737Ishii
ParticipanteOlá,
A função precisaria ser criada ANTES de ser utilizada no select. Porém você poderia usar o select da função na query original…
[]s Ishii
4 de novembro de 2010 às 4:43 pm #96738augustoca
Participante[quote=”Ishii”:1za9z2ml]Olá,
A função precisaria ser criada ANTES de ser utilizada no select. Porém você poderia usar o select da função na query original…
[]s Ishii[/quote]
Certo, do jeito que fiz ali seria impossível então?
É uma função específica para o meu caso. Eu não encontrei nenhuma maneira de jogar a query da function junto a query original, levando em conta que a minha function vai ser executada várias vezes.
4 de novembro de 2010 às 4:49 pm #96739Ishii
ParticipanteOlá,
Veja, você terá que criar a Function (Stored Procedure que retorna valor em queries)
create or replace function.....
begin...
end function....
Então poderá utilizar essa function nas suas queries…
[]s Ishii
4 de novembro de 2010 às 5:06 pm #96740augustoca
Participante[quote=”Ishii”:ox77jopy]Olá,
Veja, você terá que criar a Function (Stored Procedure que retorna valor em queries)
create or replace function.....
begin...
end function....
Então poderá utilizar essa function nas suas queries…
[]s Ishii[/quote]
Eaí,
Então, adicionando o create or replace functio ele até compilou, só que não me trouxe nenhum resultado… a estrutura geral da minha query esta assim:CREATE OR REPLACE FUNCTION fnivelSubGrupo(p_codigosubgrupo IN NUMBER, p_nivel IN NUMBER) RETURN VARCHAR2 IS
RESULT VARCHAR2(100);
CURSOR c_subgrupo IS
...
BEGIN
OPEN c_subgrupo;
FETCH c_subgrupo
INTO RESULT;
CLOSE c_subgrupo;
RETURN(RESULT);
END FUNCTION;WITH MVME
AS
(
...)SELECT
fnivelSubGrupo(filtro.Ncodisgpd, '1' )SUB_PAINIVEL2
...
FROM (
SELECT
MVME.NCODISGPD,
FROM MVME, CFGENTI, FATSGPD, CFGPLFI
...
) FILTROQuando executo só a query,m e tiro a function, ele me traz os resultados normal.
4 de novembro de 2010 às 5:10 pm #96741Ishii
ParticipanteOlá,
Com certeza a function está errada então… sugiro rever a mesma e testá-la com alguns casos para verificar se está ok o resultado.
[]s Ishii
4 de novembro de 2010 às 5:15 pm #96742augustoca
Participante[quote=”Ishii”:1fk0kpei]Olá,
Com certeza a function está errada então… sugiro rever a mesma e testá-la com alguns casos para verificar se está ok o resultado.
[]s Ishii[/quote]
Opa,
Editando oque eu disse,
Acho que vou ter que crisar essa função separada.Agradeço a ajuda
Abraço -
AutorPosts
- Você deve fazer login para responder a este tópico.