Fórum Retornar valor de uma procedure #402147
02/06/2011
0
segue a mensagem:
Segue o trecho do código:
Segue a procedure:
CREATE PROCEDURE SP_TB_TEMP (
IDENTIFICA CHAR(1),
ACESSO INTEGER,
ITEM INTEGER,
CODIGO INTEGER,
DESCRICAO VARCHAR(70),
QUANTIDADE DOUBLE PRECISION,
PRECO DOUBLE PRECISION,
PROMOCAO DOUBLE PRECISION,
CT VARCHAR(5),
UNITARIO DOUBLE PRECISION,
ALTFUNC INTEGER,
PREVENDA INTEGER)
AS
DECLARE VARIABLE V_ITEM INTEGER;
BEGIN
V_ITEM = 0;
SELECT MAX(ITEM) FROM TB_TEMP WHERE ACESSO = :ACESSO INTO :V_ITEM;
if (:V_ITEM IS NULL) then V_ITEM = 0;
V_ITEM = :V_ITEM + 1;
IF (IDENTIFICA = 'I') THEN
BEGIN
INSERT INTO TB_TEMP(ACESSO,ITEM,CODIGO,DESCRICAO,QUANTIDADE,PRECO,PROMOCAO,CT,UNITARIO,PREVENDA,CONTEUDO,TROCA_ITEM,PRECO_TROCA_ITEM)
VALUES (:ACESSO,:V_ITEM,:CODIGO,:DESCRICAO,:QUANTIDADE,:PRECO,:PROMOCAO,:CT,:UNITARIO,:PREVENDA,'S','N',0);
END
ELSE IF (IDENTIFICA = 'A') THEN
BEGIN
UPDATE TB_TEMP SET
CODIGO = :CODIGO,
DESCRICAO = :DESCRICAO,
QUANTIDADE = :QUANTIDADE,
PRECO = :PRECO,
PROMOCAO = :PROMOCAO,
CT = :CT,
UNITARIO = :UNITARIO,
PREVENDA = :PREVENDA,
CONTEUDO = 'S',
ALTFUNC = :ALTFUNC
WHERE ACESSO = :ACESSO AND ITEM = :ITEM;
END
ELSE
BEGIN
IF (:ITEM <= 0) THEN
BEGIN
DELETE FROM TB_TEMP WHERE ACESSO = :ACESSO;
END ELSE
BEGIN
DELETE FROM TB_TEMP WHERE ACESSO = :ACESSO AND ITEM = :ITEM;
END
END
EXECUTE PROCEDURE SP_TB_TEMP_VERIFICA_DESCONTO(:ACESSO);
END
Desde ja agradeçe qualquer ajuda.
Muito obrigado.
Bruno Santos
Curtir tópico
+ 0Posts
02/06/2011
Rafael Mattos
-----------------------
mas esse erro não é isso, ele é causado pelo modo que vc ta passando os parametros
exemplo:
PREVENDA na sua SP vc declarou como integer.
mas na passada do parametro vc ta passando como Value e recebendo 'PREVENDA' um valor string
Gostei + 0
02/06/2011
Bruno Santos
Eu estou chamando ela no evento OnNewRecord de um SimpleDataSet.
Gostei + 0
07/06/2011
Nigro
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)