terça-feira, 22 de abril de 2008

TYPE CURSOR - Oracle & TADODataSet

Dando continuidade ao tema “Cursor Type” no Oracle, conforme o artigo anterior pretendo tratar da utilização do ADODataSet para executar uma procedure no Oracle, aqual retorna um cursor, tendo ainda como particularidade vários parâmetros de entrada.
Retomando o assunto, vejamos a procedure “CalculaMedia”:


procedure CalculaMedia(
Nota1 in out NUMBER,
Nota2 in NUMBER,
Nota3 in NUMBER,
Nota4 in NUMBER,
ValorAprovacao IN NUMBER,
Media out NUMBER,
ZnCursor IN OUT ZNCursorType) is
begin
Media := (Nota1 + Nota2 + Nota3 + Nota4)/ 4;
IF (Media >= ValorAprovacao) THEN
ResultadoAprovacao := 'Aprovado';
ELSE
ResultadoAprovacao := 'Reprovado';
END IF;
open ZnCursor FOR
SELECT 'Aluno Estação ZN: ' AS Nome,
ResultadoAprovacao AS ResultadoZN
FROM dual;

end CalculaMedia;


Construindo o Exemplo com ADODataSet para testar a procedure com mais de um parâmetro de entrada:
Crie uma nova pagina no PagControl1: Adicione um DBGrid, um DataSource, um ADODataSet, um Panel, quatro Edits, um BitBtn. Conforme ilustrado na imagem abaixo:



Configurações obrigatórias no ADODataSet:

  1. Conecte no ADOConnection.
  2. Altere a propriedade “CommandType” para “cmdStoredProc”.
  3. Na propriedade “CommandText” digite o nome da procedure: “[owner].my_pkg.calculamedia”
  4. Delete o parâmetro cujo tipo é ftInterface (referente ao cursor).
  5. Altere a propriedade “DataType” dos demais parâmtros de “ftBCD” para “ftFloat”.
  6. Altere a propriedade “EnableBCD” do ADOStoredProc para “False”.
  7. Garanta que o ADOConnection esteja desconectado e adicione os campos persistentes (Fields Editor – Botão direito sobre o ADODataSet).




Codificando o evento OnClick do BtMedia:


procedure TForm1.BtnMediaClick(Sender: TObject);
begin
with ADODataSet1 do
begin
Parameters[0].value := StrtoFloat(Edit1.Text);
Parameters[1].Value := StrToFloat(Edit2.Text);
Parameters[2].Value := StrToFloat(Edit3.Text);
Parameters[3].Value := StrtoFloat(Edit4.Text);
Open;
end;
end;


Na próxima ilustração estou executando o exemplo construido:



Nenhum comentário:

Postar um comentário

 
BlogBlogs.Com.Br