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”:
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:
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:
- Conecte no ADOConnection.
- Altere a propriedade “CommandType” para “cmdStoredProc”.
- Na propriedade “CommandText” digite o nome da procedure: “[owner].my_pkg.calculamedia”
Delete o parâmetro cujo tipo é ftInterface (referente ao cursor). Altere a propriedade “DataType” dos demais parâmtros de “ftBCD” para “ftFloat”. Altere a propriedade “EnableBCD” do ADOStoredProc para “False”. 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