[Ajuda] Procedure com CTE
Boa Tarde,
Estou tentando criar uma proc aonde me retorna um select de uma CTE, porem me retorna apenas uma linha, sei que só irá mesmo retornar uma linha, como eu posso fazer para que me trouxesse todo o select?
Como ficaria minha sintaxe?
Abaixo a proc:
Obrigado!
Estou tentando criar uma proc aonde me retorna um select de uma CTE, porem me retorna apenas uma linha, sei que só irá mesmo retornar uma linha, como eu posso fazer para que me trouxesse todo o select?
Como ficaria minha sintaxe?
Abaixo a proc:
SET TERM ^;
CREATE PROCEDURE ABENDE_CLICK_5(
DATA_INI VARCHAR(7),
DATA_FIM VARCHAR(7))
RETURNS(
METODO VARCHAR(20),
SNQC INTEGER)
AS
BEGIN
FOR
WITH CLICK5 AS
(
SELECT MOVTO_CERTIFICACAO.CODIGO_TECNICA AS "METODO", SUM(MOVTO_CERTIFICACAO.SOMA) AS "SNQC"
FROM MOVTO_CERTIFICACAO
WHERE (MOVTO_CERTIFICACAO.STATUS = 'I1') AND (MOVTO_CERTIFICACAO.DATA >= :DATA_INI) AND
(MOVTO_CERTIFICACAO.DATA <= :DATA_FIM )
GROUP BY MOVTO_CERTIFICACAO.CODIGO_TECNICA
UNION
SELECT MOVTO_CERTIFICACAO.CODIGO_TECNICA AS "METODO", SUM(MOVTO_CERTIFICACAO.SOMA) AS "SNQC"
FROM MOVTO_CERTIFICACAO
WHERE (MOVTO_CERTIFICACAO.STATUS = 'I2') AND (MOVTO_CERTIFICACAO.DATA >= :DATA_INI) AND
(MOVTO_CERTIFICACAO.DATA <= :DATA_FIM)
GROUP BY MOVTO_CERTIFICACAO.CODIGO_TECNICA
UNION
SELECT MOVTO_CERTIFICACAO.CODIGO_TECNICA AS "METODO", SUM(MOVTO_CERTIFICACAO.SOMA) AS "SNQC"
FROM MOVTO_CERTIFICACAO
WHERE (MOVTO_CERTIFICACAO.STATUS = 'I3') AND (MOVTO_CERTIFICACAO.DATA >= :DATA_INI) AND
(MOVTO_CERTIFICACAO.DATA <= :DATA_FIM)
GROUP BY MOVTO_CERTIFICACAO.CODIGO_TECNICA
UNION
SELECT MOVTO_CERTIFICACAO.CODIGO_TECNICA AS "METODO", SUM(MOVTO_CERTIFICACAO.SOMA) AS "SNQC"
FROM MOVTO_CERTIFICACAO
WHERE (MOVTO_CERTIFICACAO.STATUS = 'I4') AND (MOVTO_CERTIFICACAO.DATA >= :DATA_INI) AND
(MOVTO_CERTIFICACAO.DATA <= :DATA_FIM)
GROUP BY MOVTO_CERTIFICACAO.CODIGO_TECNICA
)
SELECT
METODO, SUM(SNQC) AS "SNQC"
FROM CLICK5
GROUP BY METODO
INTO :METODO, :SNQC
DO
BEGIN
SUSPEND;
END
END^
SET TERM ;^
Obrigado!
Israel Souza
Curtidas 0
Respostas
Alex Lekao
18/10/2013
Ola Israel, boa tarde!!!
Nao conheco muito bem procedures, mas se vc retirar da CTE nao resolveria?
Rescreva por exemplo o codigo sem aquele Witch alguma coisa, e veja se funciona.
Espero ter ajudado.
Abraco.
Alex - Lekao
Nao conheco muito bem procedures, mas se vc retirar da CTE nao resolveria?
Rescreva por exemplo o codigo sem aquele Witch alguma coisa, e veja se funciona.
Espero ter ajudado.
Abraco.
Alex - Lekao
GOSTEI 0
Israel Souza
18/10/2013
Boa Tarde, Alex!
Na verdade com a CTE esta funcionando, porem traz apenas uma linha, se tirar a CTE já não fica dentro do q eu espero no select.
Obrigado!
Na verdade com a CTE esta funcionando, porem traz apenas uma linha, se tirar a CTE já não fica dentro do q eu espero no select.
Obrigado!
GOSTEI 0
Deivison Melo
18/10/2013
Compare sua procedure com a procedure abaixo e veja quais as diferenças entre elas!
Essa está correta e trás a quantidade de linhas que estiver de acordo com o campo lateral (parâmetro informado).
PS. Caso não conseguir, por favor, postar a estrutura de todas as tabelas usadas em sua procedure e o código da sua procedure ou apenas o sql que deseja usar para que possa confeccionar sua procedure.
Abração e bons códigos!!
Essa está correta e trás a quantidade de linhas que estiver de acordo com o campo lateral (parâmetro informado).
SET TERM ^ ;
create or alter procedure SP_RETORNA_TAM_CAMPOS (
TAB varchar(60))
returns (
TABELA varchar(31),
CAMPO varchar(31),
TAMANHO smallint)
as
BEGIN
FOR
SELECT
B.RDB$RELATION_NAME TABELA,
B.RDB$FIELD_NAME CAMPO,
A.RDB$FIELD_LENGTH TAMANHO
FROM RDB$FIELDS A,
RDB$RELATION_FIELDS B
WHERE RDB$RELATION_NAME = :TAB
AND A.RDB$FIELD_NAME = B.RDB$FIELD_SOURCE
INTO :TABELA,
:CAMPO,
:TAMANHO
DO
BEGIN
SUSPEND;
END
END^
SET TERM ; ^
GRANT EXECUTE ON PROCEDURE SP_RETORNA_TAM_CAMPOS TO SYSDBA;
PS. Caso não conseguir, por favor, postar a estrutura de todas as tabelas usadas em sua procedure e o código da sua procedure ou apenas o sql que deseja usar para que possa confeccionar sua procedure.
Abração e bons códigos!!
GOSTEI 0
Alex Lekao
18/10/2013
Boa Tarde, Alex!
Na verdade com a CTE esta funcionando, porem traz apenas uma linha, se tirar a CTE já não fica dentro do q eu espero no select.
Obrigado!
Na verdade com a CTE esta funcionando, porem traz apenas uma linha, se tirar a CTE já não fica dentro do q eu espero no select.
Obrigado!
Oi Israel, bom dia!!!
Blz,
agora que o Deivison entrou na jogada vc sera melhor assistido.
Abraco.
Alex - Lekao
GOSTEI 0