[firebase-br] RES: Erro SP

Ivan Guimarães Meirelles igmeirelles em gmail.com
Ter Nov 20 06:59:25 -03 2007


Olá Cléverson...

Não consigo entender a finalidade dessa SP. 
Parece que vc deseja que algo seja retornado em OUT_OK, porém, analisando o
código, esse campo sempre terá 'N' como resposta.
Mas se mesmo assim deseja experimentar uma solução, faça assim:

CREATE PROCEDURE SP_TESTE (
    IN_LICANO SMALLINT,
    IN_LICSEQUENCIA INTEGER,
    IN_FORCODIGOFORNECEDOR INTEGER,
    IN_MILTIPO SMALLINT,
    IN_AUTANO SMALLINT,
    IN_AUTNUMERO INTEGER,
    IN_AUTDATAEMISSAO DATE,
    IN_TODOSREQUISITANTES VARCHAR(1))
RETURNS (
    OUT_OK CHAR(1))
AS
DECLARE VARIABLE VAR_REQANO SMALLINT;
DECLARE VARIABLE VAR_REQNUMERO INTEGER;
DECLARE VARIABLE VAR_REQSEQUENCIA INTEGER; DECLARE VARIABLE
VAR_IRQNUMEROITEM INTEGER; 

begin

  FOR SELECT
		OUT_REQANO,OUT_REQNUMERO,OUT_REQSEQUENCIA,OUT_IRQNUMEROITEM
FROM SP_NET_GETITEMLICI_ITENSREQDISP(
             :IN_LICANO,
             :IN_LICSEQUENCIA,
             :IN_FORCODIGOFORNECEDOR,
             :IN_MILTIPO,
             :IN_AUTANO,
             :IN_AUTNUMERO,
             :IN_AUTDATAEMISSAO)
    INTO
        :VAR_REQANO,
        :VAR_REQNUMERO,
        :VAR_REQSEQUENCIA,
        :VAR_IRQNUMEROITEM
  DO
    OUT_OK = 'N';

end

Espero ter ajudado...
Um abraço

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Cléverson Tambosi
Enviada em: segunda-feira, 19 de novembro de 2007 17:28
Para: lista em firebase.com.br
Assunto: [firebase-br] Erro SP

Sabe aqueles erros bobos que a gente não enxerga? Acho que só pode ser
isso... Vejam a SP

CREATE PROCEDURE SP_TESTE (
    IN_LICANO SMALLINT,
    IN_LICSEQUENCIA INTEGER,
    IN_FORCODIGOFORNECEDOR INTEGER,
    IN_MILTIPO SMALLINT,
    IN_AUTANO SMALLINT,
    IN_AUTNUMERO INTEGER,
    IN_AUTDATAEMISSAO DATE,
    IN_TODOSREQUISITANTES VARCHAR(1))
RETURNS (
    OUT_OK CHAR(1))
AS
DECLARE VARIABLE VAR_REQANO SMALLINT;
DECLARE VARIABLE VAR_REQNUMERO INTEGER;
DECLARE VARIABLE VAR_REQSEQUENCIA INTEGER;
DECLARE VARIABLE VAR_IRQNUMEROITEM INTEGER;
DECLARE VARIABLE VAR_SQL VARCHAR(1000);
begin

    VAR_SQL = 'SELECT
OUT_REQANO,OUT_REQNUMERO,OUT_REQSEQUENCIA,OUT_IRQNUMEROITEM FROM
SP_NET_GETITEMLICI_ITENSREQDISP ('||
             :IN_LICANO || ',' ||
             :IN_LICSEQUENCIA || ',' ||
             :IN_FORCODIGOFORNECEDOR || ',' ||
             :IN_MILTIPO || ',' ||
             :IN_AUTANO || ',' ||
             :IN_AUTNUMERO || ',' ||
             :IN_AUTDATAEMISSAO || ')';


  FOR EXECUTE STATEMENT VAR_SQL
    INTO
         :VAR_REQANO
        ,:VAR_REQNUMERO
        ,:VAR_REQSEQUENCIA
        ,:VAR_IRQNUMEROITEM
  DO
    OUT_OK = 'N';


end

A funcionalidade dela não está completa, o código acima é só um teste, mas
dá erro "Parsing error" e o cursor fica entre o EXECUTE e o STATEMENT.
Conforme vi em
http://firebirdmasters.blogspot.com/2007/01/stored-procedures-in-firebird.ht
ml[útlima
linha da tabela], a sintaxe seria esta...





Mais detalhes sobre a lista de discussão lista