[firebase-br] SP Simples no IBExpert
Júlio Vasques
julio.vasques em tecipar.com.br
Qua Jan 13 14:51:57 -03 2016
Obrigado Renato,
Nos testes aqui vi que estava faltando o ";" no final de cada clausula do
IF.
Funcionou com END, mas também funciona com ";".
Agora estou tentando criar um cursor na SP, pois quero buscar informações
do Firebird através de meu ERP via EXEC PROCEDURE.
O meu problema é o seguinte, fiz um select via minha alicação conectando o
FIREBIRD, mas existe um campo tipo TIMESTAMP que meu sistema não aceita o
select da erro de tipo de data. Por isso, acho que posso resolver fazendo
uma SP com cursor no Firebird já convertendo o campo pra DATE. E então é
só rodar a SP da minha aplicação.
Fiz essa SP pra gerar um cursor, mas ao rodar da erro "*multiple rows in
singleton select*." e o resultado é uma linha com os campos com conteúdo
NULL
Qual a sintaxe pra gerar um cursor? Alguém tem um exemplo?
Mais uma vez obrigado.
SET TERM ^ ;
CREATE OR ALTER procedure SPVENDAS
returns (
PLACA integer,
VENDA_ID integer,
VAL_TOTAL_LIQUIDO double precision,
KM integer,
MARCA varchar(10),
DATA date)
as
begin
SELECT V.DAT_HOR_INICIO_VENDA_CPU,V.VENDA_ID,V.PLACA,VC.MARCA,V.KM
,V.VAL_TOTAL_LIQUIDO
FROM VENDA V
INNER JOIN PESSOA P ON V.PESSOA_ID = P.PESSOA_ID
INNER JOIN VEICULO VC ON V.PLACA = VC.PLACA
INTO :DATA,:VENDA_ID,:PLACA,:MARCA,:KM,:VAL_TOTAL_LIQUIDO;
suspend;
end^
SET TERM ; ^
Em 13 de janeiro de 2016 13:05, Renato Alexandre <renatoacf em gmail.com>
escreveu:
> Olá tente assim:
>
> create or alter procedure CALC2VALORES (
> OPER char(1),
> VALOR2 integer,
> VALOR1 integer)
> returns (
> RESULTADO integer)
> as
> begin
> /* Procedure Text */
> IF (:OPER = '+') THEN begin
> RESULTADO = :VALOR1 + :VALOR2
> end ELSE IF (:OPER = '-') THEN begin
> RESULTADO = :valor1 - :valor2
> end ELSE IF (:OPER = '*') then begin
> resultado = :valor1 * :valor2
> end ELSE if (:OPER = '/') then begin
> RESULTADO = :VALOR1 / :VALOR2
> end ELSE begin
> RESULTADO = NULL;
> end
> suspend;
> end^
>
> Em qua, 13 de jan de 2016 às 11:40, Júlio Vasques <
> julio.vasques em tecipar.com.br> escreveu:
>
> > Não conheço o FIREBIRD e preciso fazer uma SP.
> > Peguei um exemplo no youtube de uma SP simples, porém o cara usou o SQL
> > Manager Lite para Interbase e Firebird.
> >
> > Fiz no IBExpert porém da erro de compilação. O que pode ser?
> >
> >
> > ---------- STATEMENT ----------
> >
> > create or alter procedure CALC2VALORES (
> > OPER char(1),
> > VALOR2 integer,
> > VALOR1 integer)
> > returns (
> > RESULTADO integer)
> > as
> > begin
> > /* Procedure Text */
> > IF (:OPER = '+') THEN
> > RESULTADO = :VALOR1 + :VALOR2
> > ELSE IF (:OPER = '-') THEN
> > RESULTADO = :valor1 - :valor2
> > ELSE IF (:OPER = '*') then
> > resultado = :valor1 * :valor2
> > ELSE if (:OPER = '/') then
> > RESULTADO = :VALOR1 / :VALOR2
> > ELSE
> > RESULTADO = NULL;
> > suspend;
> > end^
> >
> >
> >
> >
> > ---------- ERROR MESSAGE ----------
> >
> > can't format message 13:896 -- message file C:\WINDOWS\firebird.msg not
> > found.
> > Dynamic SQL Error.
> > SQL error code = -104.
> > Token unknown - line 12, column 3.
> > ELSE.
> > ______________________________________________
> > 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://www.firebase.com.br/pesquisa_lista.html
> >
> ______________________________________________
> 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://www.firebase.com.br/pesquisa_lista.html
>
Mais detalhes sobre a lista de discussão lista