Erro com TSQLStoredProc e Oracle

Delphi

03/07/2014

Oi pessoal...

Estou fazendo um teste com dbExpress, utilizando os componentes TSQLConnection e TSQLStoredProc para rodar uma Stored Procedure de inserção de dados em Oracle 11g XE. Coloquei os dois componentes em um form, conforme figura abaixo:

[img]http://arquivo.devmedia.com.br/forum/imagem/300443-20140703-145942.png[/img]

Configurei os dois componentes, conforme as imagens:

TSQLConnection1:

[img]http://arquivo.devmedia.com.br/forum/imagem/300443-20140703-150404.png[/img]

TSQLStoredProc:

[img]http://arquivo.devmedia.com.br/forum/imagem/300443-20140703-150436%20%281%29.png[/img]

Abaixo as configurações dos parâmetros da Stored Procedure ( são 3, todos de Entrada - ptInput, e do tipo ftString ) :

[img]http://arquivo.devmedia.com.br/forum/imagem/300443-20140703-150754%20%281%29.png[/img]

Abaixo o código da Stored Procedure no banco:

create or replace PROCEDURE Insere_Agencia
(p_IdAgencia IN AGENCIAS.IDAGENCIA%TYPE,
p_AgeNome IN AGENCIAS.AGENOME%TYPE,
p_IdBanco IN AGENCIAS.IDBANCO%TYPE)

IS
BEGIN
INSERT INTO AGENCIAS VALUES (p_IdAgencia, p_AgeNome, p_IdBanco);
COMMIT;
END Insere_Agencia;

E para finalizar, o código do botão Incluir:

procedure TForm1.Button1Click(Sender: TObject);

var

Tran:TDBXTransaction;

begin

//try

Tran := SQLConnection1.BeginTransaction;

SQLStoredProc1.Prepared := true;

with SQLStoredProc1 do begin

Params[0].Value := edtCodAgencia.Text;
Params[1].Value := edtNomAgencia.Text;
Params[2].Value := edtCodBanco.Text;

ExecProc;

end;

SQLConnection1.CommitFreeAndNil(Tran);

MessageBox(Handle, 'Inclusão efetuada com sucesso !', 'Incluir Agência Bancária', MB_ICONINFORMATION);

// except

// SQLConnection1.RollbackFreeAndNil(Tran);

// Application.MessageBox('Um erro aconteceu e a operação foi abortada', 'ERRO!',

// MB_APPLMODAL + MB_ICONEXCLAMATION + MB_OK + MB_DEFBUTTON1);

// end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SQLConnection1.Connected := true;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
SQLConnection1.Connected := false;
end;

Estou recebendo o seguinte ERRO:

"Insere_Agencia": Actual number of parameters (1) exceeds the current number of stored procedure parameters (0).
Either uncheck the ParamCheck component property or review the parameter list content.

Configurei alguma coisa errada ? Está dizendo que o número de parâmetros que estou enviando é maior que o número de parâmetros que a Stored Procedure espera.

Desde já agradeço por qualquer ajuda.
Adalberto Brasaca

Adalberto Brasaca

Curtidas 0

Respostas

Marcos Saffran

Marcos Saffran

03/07/2014

Olá Adalberto,

também está dizendo para desmarcar o check box da propriedade "ParamCheck".

Tente colocar essa propriedade como false no SQLStoredProc1.
GOSTEI 0
Adalberto Brasaca

Adalberto Brasaca

03/07/2014

Olá Adalberto,

também está dizendo para desmarcar o check box da propriedade "ParamCheck".

Tente colocar essa propriedade como false no SQLStoredProc1.


Oi Marcos...

Grato pelo retorno. Desmarquei a propriedade e agora o Oracle retornou com os seguintes erros:

ORA-06550: line 1, column 8:
PLS-00201: identifier 'Insere_Agencia' must be declared
ORA-06550: line 1, column 8:
PL/SQL: Statement Ignored.

Parece que ele não está encontrando a Stored Procedure no banco. Estranho, pois na propriedade StoredProcName do componente TSQLStoredProc eu digitei o
nome da SP ( Insere_Agencia ), conforme a terceira figura acima.
GOSTEI 0
Marcos Saffran

Marcos Saffran

03/07/2014

Olá Adalberto,

agora teremos que esperar a ajuda dos outros amigos do forum, pois não conheço o banco de dados oracle.
GOSTEI 0
Adalberto Brasaca

Adalberto Brasaca

03/07/2014

Olá Adalberto,

agora teremos que esperar a ajuda dos outros amigos do forum, pois não conheço o banco de dados oracle.


Mesmo assim agradeço muito.

Abraço.
GOSTEI 0
POSTAR