Fórum Retornar valor de uma procedure #402147

02/06/2011

0

Ola estou precisando de ajuda para retornar o valor de uma procedure,
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

Bruno Santos

Responder

Posts

02/06/2011

Rafael Mattos

olha sua SP não tem variaveis de retorno, então ele não vai te retornar dados....

-----------------------

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


Responder

Gostei + 0

02/06/2011

Bruno Santos

Ta, desculpa insistir, mas como seria a forma correta de trabalhar com essa procedure?

Eu estou chamando ela no evento OnNewRecord de um SimpleDataSet.
Responder

Gostei + 0

07/06/2011

Nigro

Sua dúvida vai além do fórum de Delphi, creio que você precise estudar mais BD também. Não sabemos exatamente o tipo de retorno que você espera
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar