Sts Procedure Verificar antes de Inserir Produto.
Pessoal estou desonvelndo sp. para adicionar um produto na falta + só vai adicionar quando ele nao estiver na mesma eu tentei assim + da este erro
Error Message:
----------------------------------------
Invalid token.
invalid request BLR at offset 280.
parameter mismatch for procedure ADICIONARFALTA.
Engracado que executando a procedure pelo Ib vai certinho é que disparo ela através de um gatilho !.
Outra questão é o seguinte preciso registrar tambem a data o dia então estou enviando assim ´now´ mas ai fica data e hora, não existe outra forma de ficar só a data
SET TERM ^ ;
CREATE PROCEDURE ADICIONARFALTA (
ICODIGO INTEGER,
SBARRAS VARCHAR(13),
SPRODUTO VARCHAR(40),
DQUANTIDADE DOUBLE PRECISION,
DCOMPRA DOUBLE PRECISION,
DVENDA DOUBLE PRECISION,
IMINIMO DOUBLE PRECISION,
SCAMPO1 VARCHAR(40),
SCAMPO2 VARCHAR(40),
SCAMPO3 VARCHAR(40),
SCAMPO4 VARCHAR(40),
DDATAPEDIDO DATE,
SSETOR VARCHAR(40),
SFORNECEDOR VARCHAR(40))
RETURNS (
RCODIGO INTEGER)
AS
begin
for select CODIGO
from TEMPRELATORIO
where (CODIGO = :ICODIGO)
into :RCODIGO
do
begin
suspend;
end
if (:Rcodigo is null)then
begin
insert into TempRelatorio
(CAMPO1, CAMPO2, CAMPO3, CAMPO4, CODIGO, CODIGO_BARRAS, DATAPEDIDO, FORNECEDOR,
MINIMO, PRECO_COMPRA, PRECO_VENDA, PRODUTO, QUANTIDADE, SETOR)
values
(:sCAMPO1, :sCAMPO2, :sCAMPO3, :sCAMPO4, :iCODIGO, :sBARRAS, :dDATAPEDIDO,
:sFORNECEDOR, :iMINIMO, :dCOMPRA, :dVENDA, :sPRODUTO, :dQUANTIDADE,
:sSETOR);
end
end
^
SET TERM ; ^
Obrigado a tds !
Error Message:
----------------------------------------
Invalid token.
invalid request BLR at offset 280.
parameter mismatch for procedure ADICIONARFALTA.
Engracado que executando a procedure pelo Ib vai certinho é que disparo ela através de um gatilho !.
Outra questão é o seguinte preciso registrar tambem a data o dia então estou enviando assim ´now´ mas ai fica data e hora, não existe outra forma de ficar só a data
SET TERM ^ ;
CREATE PROCEDURE ADICIONARFALTA (
ICODIGO INTEGER,
SBARRAS VARCHAR(13),
SPRODUTO VARCHAR(40),
DQUANTIDADE DOUBLE PRECISION,
DCOMPRA DOUBLE PRECISION,
DVENDA DOUBLE PRECISION,
IMINIMO DOUBLE PRECISION,
SCAMPO1 VARCHAR(40),
SCAMPO2 VARCHAR(40),
SCAMPO3 VARCHAR(40),
SCAMPO4 VARCHAR(40),
DDATAPEDIDO DATE,
SSETOR VARCHAR(40),
SFORNECEDOR VARCHAR(40))
RETURNS (
RCODIGO INTEGER)
AS
begin
for select CODIGO
from TEMPRELATORIO
where (CODIGO = :ICODIGO)
into :RCODIGO
do
begin
suspend;
end
if (:Rcodigo is null)then
begin
insert into TempRelatorio
(CAMPO1, CAMPO2, CAMPO3, CAMPO4, CODIGO, CODIGO_BARRAS, DATAPEDIDO, FORNECEDOR,
MINIMO, PRECO_COMPRA, PRECO_VENDA, PRODUTO, QUANTIDADE, SETOR)
values
(:sCAMPO1, :sCAMPO2, :sCAMPO3, :sCAMPO4, :iCODIGO, :sBARRAS, :dDATAPEDIDO,
:sFORNECEDOR, :iMINIMO, :dCOMPRA, :dVENDA, :sPRODUTO, :dQUANTIDADE,
:sSETOR);
end
end
^
SET TERM ; ^
Obrigado a tds !
Essistemas
Curtidas 0
Respostas
Gandalf.nho
11/05/2005
Como vc executa sua SP na trigger? Para passar só a data use CURRENT_DATE.
GOSTEI 0
Essistemas
11/05/2005
Executo deste forma vc acredita que mesmo com o current_Date ele
grava data e hora no banco .
Obrigado !! se vc puder me da uma força nesta rotina fico grato !!
AS
begin
if (New.controlfalta=´T´) then
begin
if (New.quantidade >=New.Minimo) then
Execute Procedure ApagarFalta(New.codigo);
if (New.quantidade< New.Minimo) then
begin
Execute Procedure adicionarfalta(New.codigo,New.codigo_barras,
New.produto,New.quantidade,New.preco_compra,New.preco_venda,
new.minimo,New.campo1,New.campo2,New.campo3,New.campo4,Current_Date,new.setor,
New.fornecedor) ;
end
end
end
grava data e hora no banco .
Obrigado !! se vc puder me da uma força nesta rotina fico grato !!
AS
begin
if (New.controlfalta=´T´) then
begin
if (New.quantidade >=New.Minimo) then
Execute Procedure ApagarFalta(New.codigo);
if (New.quantidade< New.Minimo) then
begin
Execute Procedure adicionarfalta(New.codigo,New.codigo_barras,
New.produto,New.quantidade,New.preco_compra,New.preco_venda,
new.minimo,New.campo1,New.campo2,New.campo3,New.campo4,Current_Date,new.setor,
New.fornecedor) ;
end
end
end
GOSTEI 0
Essistemas
11/05/2005
O current_date agora deu certinho valeu mesmo.
Só falta o outro abacaxi !!
Só falta o outro abacaxi !!
GOSTEI 0
Gandalf.nho
11/05/2005
Já vi qual é o seu problema. Sua SP tem um parâmetro de retorno e na hora de executá-la na trigger vc não colocou o código para receber o valor. Outra coisa, qual a finalidade do trecho abaixo, já que ele retorna o mesmo valor passado como parâmetro? Verificar a existência do código?
for select CODIGO from TEMPRELATORIO where (CODIGO = :ICODIGO) into :RCODIGO do begin suspend; end
GOSTEI 0
Essistemas
11/05/2005
É o seguinte só consegui fazer funcionar fazendo assim,
era um exemplo que eu tinha aqui, como eu executaria este sp e ao mesmo tempo pegar o retorno dela ?
era um exemplo que eu tinha aqui, como eu executaria este sp e ao mesmo tempo pegar o retorno dela ?
GOSTEI 0
Gandalf.nho
11/05/2005
Para chamar um SP executável com retorno de valores em SP e triggers, faça assim:
EXECUTE PROCEDURE nome_procedure parâmetros_entrada RETURNING_VALUES parâmetros_saída;
GOSTEI 0
Essistemas
11/05/2005
Puxa vc acredita que ainda estou enroladoo criei essa procedure a parte
p/ verificar a falta chamase verificar falta, mas com executo ela através do trigger e verifico se ela retornou null ou existe o produto lá
tipo assim
if verificarFalta(05) is nul Then
faça isto intendeu
for select CODIGO from TEMPRELATORIO
where (CODIGO = :ICODIGO) into :RCODIGO do
begin
suspend;
end
Obrigado !!!
p/ verificar a falta chamase verificar falta, mas com executo ela através do trigger e verifico se ela retornou null ou existe o produto lá
tipo assim
if verificarFalta(05) is nul Then
faça isto intendeu
for select CODIGO from TEMPRELATORIO
where (CODIGO = :ICODIGO) into :RCODIGO do
begin
suspend;
end
Obrigado !!!
GOSTEI 0