[firebase-br] Problema c/ SP e/ou IBExpert!!!!
Roger
pikurim em hotmail.com
Qui Abr 17 09:05:16 -03 2008
Esta SP como era antes não dava erro:
SET TERM ^ ;
CREATE PROCEDURE CONSULTA_TIP (
inicio timestamp,
fim timestamp
returns (
id_area integer,
id_operacao varchar(10),
limite integer,
transporte integer,
total integer,
minutos integer,
excedidos integer,
ciclos integer)
as
BEGIN
FOR
SELECT AREA_ID,OPERACAO_ID,
AVG(DURACAO) TOTAL,
AVG(TRANSPORTE) TRANSPORTE,
AVG(LIMITE) LIMITE,
CASE WHEN COUNT(1) > 1 THEN COUNT(1) ELSE 0 END CICLOS,
SUM(CASE WHEN EXCEDIDO > 0 THEN 1 ELSE 0 END) EXCEDIDOS,
SUM(EXCEDIDO) MINUTOS
FROM PROCESSADOS
WHERE (INICIO >= :INICIO) AND (TERMINO <= :FIM)
GROUP BY 1,2
INTO :ID_AREA,
:ID_OPERACAO,
:TOTAL,
:TRANSPORTE,
:LIMITE,
:CICLOS,
:EXCEDIDOS,
:MINUTOS
DO
BEGIN
SUSPEND;
END
END^
SET TERM ; ^
GRANT EXECUTE ON PROCEDURE CONSULTA_TIP TO SYSDBA;
E ESTA CONTINUA C/ AQUELA MENSAGEM:
SET TERM ^ ;
CREATE PROCEDURE CONSULTA_TIP (
inicio timestamp,
fim timestamp,
turno varchar(5))
returns (
id_area integer,
id_operacao varchar(10),
limite integer,
transporte integer,
total integer,
minutos integer,
excedidos integer,
ciclos integer)
as
BEGIN
FOR EXECUTE STATEMENT
'SELECT AREA_ID,OPERACAO_ID,
AVG(DURACAO) TOTAL,
AVG(TRANSPORTE) TRANSPORTE,
AVG(LIMITE) LIMITE,
CASE WHEN COUNT(1) > 1 THEN COUNT(1) ELSE 0 END CICLOS,
SUM(CASE WHEN EXCEDIDO > 0 THEN 1 ELSE 0 END) EXCEDIDOS,
SUM(EXCEDIDO) MINUTOS
FROM PROCESSADOS
WHERE (INICIO >= ''' || :INICIO || ''') AND (TERMINO <= ''' || :FIM ||
''') AND (TURNO IN (' || :TURNO || '))
GROUP BY 1,2'
INTO :ID_AREA,
:ID_OPERACAO,
:TOTAL,
:TRANSPORTE,
:LIMITE,
:CICLOS,
:EXCEDIDOS,
:MINUTOS
DO
BEGIN
SUSPEND;
END
END^
SET TERM ; ^
GRANT EXECUTE ON PROCEDURE CONSULTA_TIP TO SYSDBA;
"Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
escreveu na notícia da mensagem:1136071589.20080416160150 em warmboot.com.br...
> A mensagem de erro é clara: em alguma situação especifica, o comando
> dinâmico que foi montado está retornando um dado de tipo diferente
> da variável onde está sendo atribuído.
>
> O execute statment não pode ser validado no momento de compilação da
> procedure, pois o comando a ser executado pode mudar a cada execução.
>
> []s
> Cantu (Membro do TeamFB - FireBase)
> http://www.warmboot.com.br
> FireBase - http://www.FireBase.com.br
> Blog - http://blog.firebase.com.br
>
> CSF> bah, ninguem?????
>
> CSF> Roger escreveu:
>>> A Stored procedure abaixo está compilada e tudo mais, só que as vezes,
>>> conforme a data que passo por parâmetro dá o seguinte erro:
>>>
>>>
>>> Unsuccessful execution caused by an unavailable resource
>>> Variable type (position 0) in EXECUTE STATEMENT 'SELECT
>>> AREA_ID,OPERACAO_ID,INTO does not match returned column type.
>>> At procedure 'CONSULTA_TIP'.
>>>
>>>
>>> A tabela PROCESSADOS tem 800 mil registros.
>>>
>>> ______
>>>
>>>
>>> SET TERM ^ ;
>>>
>>> CREATE PROCEDURE CONSULTA_TIP (
>>> turno varchar(5),
>>> inicio timestamp,
>>> fim timestamp)
>>> returns (
>>> id_operacao varchar(10),
>>> limite bigint,
>>> transporte bigint,
>>> total bigint,
>>> minutos bigint,
>>> excedidos bigint,
>>> ciclos bigint,
>>> id_area bigint)
>>> as
>>> BEGIN
>>> FOR EXECUTE STATEMENT
>>> 'SELECT AREA_ID,OPERACAO_ID,
>>> AVG(DURACAO) TOTAL,
>>> AVG(TRANSPORTE) TRANSPORTE,
>>> AVG(LIMITE) LIMITE,
>>> CASE WHEN COUNT(1) > 1 THEN COUNT(1) ELSE 0 END CICLOS,
>>> SUM(CASE WHEN EXCEDIDO > 0 THEN 1 ELSE 0 END) EXCEDIDOS,
>>> SUM(EXCEDIDO) MINUTOS
>>>
>>> FROM PROCESSADOS
>>> WHERE ((INICIO >= ''' || :INICIO || ''') AND (TERMINO <= ''' || :FIM
>>> ||
>>> ''')) AND TURNO IN (' || :TURNO || ')
>>>
>>> GROUP BY AREA_ID,OPERACAO_ID'
>>> INTO :ID_AREA,
>>> :ID_OPERACAO,
>>> :TOTAL,
>>> :TRANSPORTE,
>>> :LIMITE,
>>> :CICLOS,
>>> :EXCEDIDOS,
>>> :MINUTOS
>>> DO
>>> BEGIN
>>> SUSPEND;
>>> END
>>> END^
>>>
>>> SET TERM ; ^
>>>
>>> GRANT EXECUTE ON PROCEDURE CONSULTA_TIP TO SYSDBA;
>>>
>>>
>>>
>>> ______________________________________________
>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
>>> http://www.firebase.com.br/fb/artigo.php?id=1107
>>> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>>>
>
>
> CSF> ______________________________________________
> CSF> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> CSF> Para saber como gerenciar/excluir seu cadastro na lista, use:
> CSF> http://www.firebase.com.br/fb/artigo.php?id=1107
> CSF> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista