[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