Erro com Stored Procedure
Eu tenho essa procedure que funciona qndo eu quero inserir ou alterar os dados, mas qndo eu quero excluir ele da a seguinte mensagem
[color=blue:4c3da8526c]REQUIRED PARAM NOT SET[/color:4c3da8526c]
Eu executo ela apartir do delphi.
O que eu devo fazer?
CREATE PROCEDURE SP_CFGUSUARIOS (
OPERACAO INTEGER,
NOM VARCHAR(40),
LOG VARCHAR(20),
SEN VARCHAR(10),
SIT INTEGER,
FUN INTEGER,
COD INTEGER)
RETURNS (
VARLOGIN VARCHAR(20),
VARSENHA VARCHAR(10),
VARNOME VARCHAR(40),
VARSITUACAO INTEGER,
VARFUNCAO INTEGER)
AS
begin
-- Insere dados do usuário
if (:OPERACAO = 1) then
begin
Insert Into CFGUSUARIOS (NOME,LOGIN,SENHA,SITUACAO,FUNCAO,CODIGO)
VALUES (:NOM,:LOG,:SEN,:SIT,:FUN,:COD);
end
-- Atualiza dados do usuário
if (:OPERACAO = 2) then
begin
Update CFGUSUARIOS set
NOME = :NOM,
LOGIN = :LOG,
SENHA = :SEN,
SITUACAO = :SIT,
FUNCAO = :FUN
Where CODIGO = :COD;
end
-- Apaga dados do usuário
if (:OPERACAO = 3) then
Delete From CFGUSUARIOS where (CODIGO = :COD);
-- Seleciona dados do usuário
if (:OPERACAO = 4) then
select NOME,LOGIN,SENHA,SITUACAO,FUNCAO from cfgusuarios where (CODIGO = :COD)
into :VARNOME,:VARLOGIN,:VARSENHA,:VARSITUACAO,:VARFUNCAO;
suspend;
end
[color=green:4c3da8526c]Movido de Delphi para Interbase/Firebird[/color:4c3da8526c]
[color=blue:4c3da8526c]REQUIRED PARAM NOT SET[/color:4c3da8526c]
Eu executo ela apartir do delphi.
O que eu devo fazer?
CREATE PROCEDURE SP_CFGUSUARIOS (
OPERACAO INTEGER,
NOM VARCHAR(40),
LOG VARCHAR(20),
SEN VARCHAR(10),
SIT INTEGER,
FUN INTEGER,
COD INTEGER)
RETURNS (
VARLOGIN VARCHAR(20),
VARSENHA VARCHAR(10),
VARNOME VARCHAR(40),
VARSITUACAO INTEGER,
VARFUNCAO INTEGER)
AS
begin
-- Insere dados do usuário
if (:OPERACAO = 1) then
begin
Insert Into CFGUSUARIOS (NOME,LOGIN,SENHA,SITUACAO,FUNCAO,CODIGO)
VALUES (:NOM,:LOG,:SEN,:SIT,:FUN,:COD);
end
-- Atualiza dados do usuário
if (:OPERACAO = 2) then
begin
Update CFGUSUARIOS set
NOME = :NOM,
LOGIN = :LOG,
SENHA = :SEN,
SITUACAO = :SIT,
FUNCAO = :FUN
Where CODIGO = :COD;
end
-- Apaga dados do usuário
if (:OPERACAO = 3) then
Delete From CFGUSUARIOS where (CODIGO = :COD);
-- Seleciona dados do usuário
if (:OPERACAO = 4) then
select NOME,LOGIN,SENHA,SITUACAO,FUNCAO from cfgusuarios where (CODIGO = :COD)
into :VARNOME,:VARLOGIN,:VARSENHA,:VARSITUACAO,:VARFUNCAO;
suspend;
end
[color=green:4c3da8526c]Movido de Delphi para Interbase/Firebird[/color:4c3da8526c]
Blbacelar
Curtidas 0
Respostas
Rjun
31/08/2005
Você esta passando todos os parametros que a stp requer?
GOSTEI 0
Blbacelar
31/08/2005
Para excluir eu faço assim:
with IBStoredProcedure do
begin
ParamByName(´OPERACAO´).AsInteger:= 3;
ParamByName(´COD´).AsString:= edtCodigo.Text;
ExecProc;
end;
with IBStoredProcedure do
begin
ParamByName(´OPERACAO´).AsInteger:= 3;
ParamByName(´COD´).AsString:= edtCodigo.Text;
ExecProc;
end;
GOSTEI 0
Rjun
31/08/2005
É o seguinte: sempre faço uma STP para incluir, outra para excluir e outra para alterar.
No seu caso, você deve passar todos os parâmetros, mesmo para fazer uma exclusão.
No seu caso, você deve passar todos os parâmetros, mesmo para fazer uma exclusão.
GOSTEI 0