Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Angelo Compri Barbosa

"BdpCommand.Parametrs" Vs "Blob Types"

Recommended Posts

Ola amigos,

 

Um problema curioso.

Estou tentando enviar um BLOB como parametro para uma procedure do Oracle.

No Delphi.Net WinForms o BLOB é reconhecido como Array of Bytes ou TBytes.

 

Reproduzir o problema:

1. Crie uma Stored Proc qualquer no Oracle.

CREATE OR REPLACE PROCEDURE USP_BLOB(P_IN IN BLOB)ISX INTEGER;BEGIN  IF (NOT P_IN IS NULL) THEN	X := 1;  -- ALGUMA COISA  END IF;EXCEPTION WHEN OTHERS THEN    raise_application_error (-20000, 'DEU ERRO!' || CHR(13) || SQLERRM);   END;
2. Abra o Delphi.NET(8, 2005, 2006)

3. Coloque no Form: 1 BdpConnection, 1 BdpCommand e 1 Button

4. Com o BdpConnection, configure a conexão. Com o BdpCommand, mude o ComandType para StoredProcedure e selecione a procedure "USP_BLOB" no Command Text.

5. No clique do botão coloque o seguinte código:

procedure frmCadastro_Padrao.Button1_Click(sender: System.Object; e: System.EventArgs);begin  BdpCommand1.Close;  BdpCommand1.Connection.Open;  try	BdpCommand1.Parameters.Item['P_IN'].Value := dsCadastro.Tables[0].Rows[1].Item['BOLB_FIELD'] as TBytes; {Qualquer BLOB [Tem que ter informação neste BLOB]}	BdpCommand1.ExecuteNonQuery;  finally	BdpCommand1.Connection.Close;  end;end;
6. Rode a aplicação e clique no botão.

 

A seguinte mensagem é devolvida:

Project Project1.exe encountered unhandled exception class System.NullReferenceException with message 'Object reference not set to an instance of an object.'

 

Perceba que este erro não veio do Oracle, pois nossa StoredProc sempre retornará a frase "DEU ERRO!"

Ou seja, ele nem conseguu enviar a informação para o Oracle.

 

Alguem sabe como proceder??

 

Abraços,

Angelo Compri

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.