Ninguém Responde - Bloqueado (AZ)

Delphi

26/04/2004

Pessoal,

Estou tentando criar uma Stored Procedure para incluir alguns valores em uma determinada tabela. Toda vez que tento gerar o script da Stored Procedure através do Interactive Sql aparece o seguinte erro: ´Token unknown - line 11, char 22 DEFAULT´. Entendo que o erro está + ou - na linha 11 posião 22 e tem alguma coisa a ver com ´DEFAULT´, mas, para ser sincero não consigo decifrar a causa do erro.
Se alguém puder ajudar ficarei grato.
Segue abaixo o Script da tabela, e em seguida o Script da Stored Procedure:

Obs1: Utilizo o Interbase 6.0 com dialect 3.

Obs2: Este tópico já foi editado 3 vezes e infelizmente não obtive
respostas.


Tabela
=====


CREATE TABLE ´SEG06_LOG_TABELA´
(
´SEG06_ID´ INTEGER NOT NULL,
´SEG06_TABELA´ VARCHAR(255),
´SEG06_CHAVE´ VARCHAR(255),
´SEG06_COLUNA´ VARCHAR(255),
´SEG06_DE_VALOR´ VARCHAR(255),
´SEG06_PARA_VALOR´ VARCHAR(255),
´SEG06_FLAG_CHAVE´ CHAR(1),
´SEG06_OPERACAO´ CHAR(9),
´SEG06_DATA´ TIMESTAMP DEFAULT ´NOW´
);




Stored Procedure
===========

SET TERM # ;
CREATE PROCEDURE ´LOG_TRANSACAO´
(
´SEG06_ID´ INTEGER,
´SEG06_TABELA´ VARCHAR(255),
´SEG06_CHAVE´ VARCHAR(255),
´SEG06_COLUNA´ VARCHAR(255),
´SEG06_DE_VALOR´ VARCHAR(255),
´SEG06_PARA_VALOR´ VARCHAR(255),
´SEG06_FLAG_CHAVE´ CHAR(01),
´SEG06_OPERACAO´ CHAR(09),
´SEG06_DATA´ TIMESTAMP DEFAULT ´NOW´
)

AS
DECLARE VARIABLE p_id INTEGER;
DECLARE VARIABLE p_tabela VARCHAR(255);
DECLARE VARIABLE p_chave VARCHAR(255);
DECLARE VARIABLE p_coluna VARCHAR(255);
DECLARE VARIABLE p_paravalor VARCHAR(255);
DECLARE VARIABLE p_devalor VARCHAR(255);
DECLARE VARIABLE p_flagchave VARCHAR(01);
DECLARE VARIABLE p_operacao VARCHAR(09);
DECLARE VARIABLE p_data TIMESTAMP DEFAULT ´NOW´;

begin
if (:p_operacao = ´Incluir´) then
begin
Insert into ´SEG06_LOG_TABELA´ (´SEG06_ID´, ´SEG06_TABELA´, ´SEG06_CHAVE´,
´SEG06_COLUNA´, ´SEG06_PARA_VALOR´, ´SEG06_FLAG_CHAVE´, ´SEG06_OPERACAO´,
´SEG06_DATA´)
values (:p_id, :p_tabela, :p_chave, :p_coluna, :p_paravalor, :p_flagchave,
:p_operacao, :p_data);
end

if (:tipo = ´Editar´) then
begin
Insert into ´SEG06_LOG_TABELA´ (´SEG06_ID´, ´SEG06_TABELA´, ´SEG06_CHAVE´,
´SEG06_COLUNA´, ´SEG06_DE_VALOR´, ´SEG06_PARA_VALOR´, ´SEG06_FLAG_CHAVE´,
´SEG06_OPERACAO´, ´SEG06_DATA´)
values (:p_id, :p_tabela, :p_chave, :p_coluna, :p_devalor, :p_paravalor, :p_flagchave,
:p_operacao, :p_data);
end

if (:tipo = ´Excluir´) then
begin
Insert into ´SEG06_LOG_TABELA´ (´SEG06_ID´, ´SEG06_TABELA´, ´SEG06_CHAVE´,
´SEG06_COLUNA´, ´SEG06_DE_VALOR´, ´SEG06_FLAG_CHAVE´, ´SEG06_OPERACAO´,
´SEG06_DATA´)
values (:p_id, :p_tabela, :p_chave, :p_coluna, :p_devalor, :p_flagchave,
:p_operacao, :p_data);
end

end #
SET TERM ;


Mmbarros

Mmbarros

Curtidas 0

Respostas

Dopi

Dopi

26/04/2004

Já experimentou mudar a linha:

DECLARE VARIABLE p_data TIMESTAMP DEFAULT ´NOW´;

para algo do tipo:

DECLARE VARIABLE p_data TIMESTAMP ;

if p_data is NULL then p_data = ´NOW´;


No manual do Interbase 6 a sintaxe é:

DECLARE VARIABLE var datatype

ou seja, não tem a opção DEFAULT...


GOSTEI 0
Welington

Welington

26/04/2004

Você não pode usar o DEFAULT ´NOW´ nas variáveis e nem nos parâmetros da storedproc como vc fez.

Para que vc declarou estas variáveis??? Você não preenche seus valores em nenhuma parte da storedproc. No lugar das variáveis(pelo o que eu entendi), você deve usar os parâmetros da storedproc
ex.:

Insert into SEG06_LOG_TABELA (SEG06_ID, SEG06_TABELA, SEG06_CHAVE,SEG06_COLUNA, SEG06_DE_VALOR,SEG06_PARA_VALOR, SEG06_FLAG_CHAVE,
SEG06_OPERACAO, SEG06_DATA)
values (:SEG06_ID, :SEG06_TABELA, :SEG06_CHAVE,
:SEG06_COLUNA, :SEG06_DE_VALOR, :SEG06_PARA_VALOR, :SEG06_FLAG_CHAVE,:SEG06_OPERACAO, :SEG06_DATA);


DECLARE VARIABLE p_data TIMESTAMP DEFAULT ´NOW´;


GOSTEI 0
Mmbarros

Mmbarros

26/04/2004

Pessoal,

De antemão agradeço pela ajuda mas, continua dando erro modifiquei o Script conforme orientação de voçês mas o erro agora é: ´Sql error code = -226 Column Unknown´, Fiquei sem entender nada, como ele está recalmando de uma coluna se todas existem?



Script Modificado:
===========

SET TERM # ;
CREATE PROCEDURE ´LOG_TRANSACAO´
(
´SEG06_ID´ INTEGER,
´SEG06_TABELA´ VARCHAR(255),
´SEG06_CHAVE´ VARCHAR(255),
´SEG06_COLUNA´ VARCHAR(255),
´SEG06_DE_VALOR´ VARCHAR(255),
´SEG06_PARA_VALOR´ VARCHAR(255),
´SEG06_FLAG_CHAVE´ CHAR(01),
´SEG06_OPERACAO´ CHAR(09),
´SEG06_DATA´ TIMESTAMP)

AS

begin
if (:p_operacao = ´Incluir´) then
begin
Insert into ´SEG06_LOG_TABELA´ (´SEG06_ID´, ´SEG06_TABELA´, ´SEG06_CHAVE´,
´SEG06_COLUNA´, ´SEG06_PARA_VALOR´, ´SEG06_FLAG_CHAVE´, ´SEG06_OPERACAO´,
´SEG06_DATA´)
values (:p_id, :p_tabela, :p_chave, :p_coluna, :p_paravalor, :p_flagchave,
:p_operacao, :p_data);
end

if (:tipo = ´Editar´) then
begin
Insert into ´SEG06_LOG_TABELA´ (´SEG06_ID´, ´SEG06_TABELA´, ´SEG06_CHAVE´,
´SEG06_COLUNA´, ´SEG06_DE_VALOR´, ´SEG06_PARA_VALOR´, ´SEG06_FLAG_CHAVE´,
´SEG06_OPERACAO´, ´SEG06_DATA´)
values (:p_id, :p_tabela, :p_chave, :p_coluna, :p_devalor, :p_paravalor, :p_flagchave,
:p_operacao, :p_data);
end

if (:tipo = ´Excluir´) then
begin
Insert into ´SEG06_LOG_TABELA´ (´SEG06_ID´, ´SEG06_TABELA´, ´SEG06_CHAVE´,
´SEG06_COLUNA´, ´SEG06_DE_VALOR´, ´SEG06_FLAG_CHAVE´, ´SEG06_OPERACAO´,
´SEG06_DATA´)
values (:p_id, :p_tabela, :p_chave, :p_coluna, :p_devalor, :p_flagchave,
:p_operacao, :p_data);
end

end #
SET TERM ;


GOSTEI 0
POSTAR