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