Ninguém Responde - Bloqueado (AZ)
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 ;
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
Curtidas 0
Respostas
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...
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
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´;
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
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 ;
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