1. Use procedimentos armazenados para retornar conjuntos de dados
O conjunto de dados retornado por procedimentos armazenados no Oracle é retornado por parâmetros dos dados do tipo de cursor de ref, e os parâmetros que retornam os dados devem ser do tipo ou no tipo de saída.
Como o tipo de dados do parâmetro não pode ser especificado diretamente ao definir um procedimento armazenado é: Ref Cursor, o Cursor do REF é primeiro redefinido pelo seguinte método:
criar ou substituir o pacote Fuxjpackage é
tipo FuxjResultset é o cursor ref;
-Você também pode definir outro conteúdo
final Fuxjpackage;
Defina o procedimento armazenado novamente:
Crie ou substitua o procedimento UpdateFuxJexample (SDM em CHAR, SMC em CHAR, Preccur in Out Fuxjpackage.fuxjresultset)
como
Começar
Atualizar FuxJexample Set MC = SMC onde dm = sdm;
Se sql%rowcount = 0 então
reversão;
Abra Preccur para
Selecione '0' res em Dual;
outro
comprometer-se;
Abra Preccur para
Selecione '1' res em Dual;
fim if;
fim;
e
Crie ou substitua o procedimento InsertFuxJexample (SDM em char, SMC em char, Preccur in Out Fuxjpackage.fuxjresultset)
como
Começar
inserir valores FuxJexample (DM, MC) (SDM, SMC);
comprometer-se;
Abra Preccur para
Selecione * no FuxJexample;
fim;
2. Ligue para o procedimento armazenado que retorna o conjunto de dados em Delphi
O armazenamento que executa o conjunto de dados de retorno pode ser chamado através do TSTOREDPROC ou TTQUERY CONTROL. ptinputOutput.
Use o TStoredProc para executar as configurações relevantes do UpdateFuxJexample como:
Objeto armazenadoProc1: TStoredProc
DatabaseName = 'useproc'
Armazenadoprocname = 'updateFuxJexExample'
Paramdata = <
item
Datatype = ftString
Nome = 'sdm'
Paramtype = ptInput
fim
item
Datatype = ftString
Nome = 'smc'
Paramtype = ptInput
fim
item
Datatype = ftcursor
Nome = 'Preccur'
Paramtype = ptInputOutput
Valor = nulo
final>
fim
O método de execução é:
StoredProc1.Params.items [0] .Asstring: = Edit1.Text;
StoredProc1.params.items [1] .Asstring: = Edit2.text;
StoredProc1.Active: = false;
StoredProc1.Active: = True;
Use o TQUERY para executar as configurações relevantes do insertfuxJexample como:
Objetivo Query1: Tquey
DatabaseName = 'useproc'
Sql.Strings = (
'começar'
'InsertfuxJexample (sdm => m, smc =>: mc, preccur =>: reccur);'
'fim;')
Paramdata = <
item
Datatype = ftString
Nome = 'dm'
Paramtype = ptInput
fim
item
Datatype = ftString
Nome = 'mc'
Paramtype = ptInput
fim
item
Datatype = ftcursor
Nome = 'reccur'
Paramtype = ptInputOutput
final>
fim
O método de execução é:
Query1.params.items [0] .ASSTRING: = Edit3.Text;
Query1.params.items [1] .Asstring: = edit4.text;
Query1.active: = false;
Query1.active: = true;
Se sql%rowcount = 0 então
reversão;
Abra Preccur para
Selecione '0' res em Dual;
outro
comprometer-se;
Abra Preccur para
Selecione '1' res em Dual;
fim if;
fim;
e
Crie ou substitua o procedimento InsertFuxJexample (SDM em char, SMC em char, Preccur in Out Fuxjpackage.fuxjresultset)
como
Começar
inserir valores FuxJexample (DM, MC) (SDM, SMC);
comprometer-se;
Abra Preccur para
Selecione * no FuxJexample;
fim;
2. Ligue para o procedimento armazenado que retorna o conjunto de dados em Delphi
O armazenamento que executa o conjunto de dados de retorno pode ser chamado através do TSTOREDPROC ou TTQUERY CONTROL. ptinputOutput.
Use o TStoredProc para executar as configurações relevantes do UpdateFuxJexample como:
Objeto armazenadoProc1: TStoredProc
DatabaseName = 'useproc'
Armazenadoprocname = 'updateFuxJexExample'
Paramdata = <
item
Datatype = ftString
Nome = 'sdm'
Paramtype = ptInput
fim
item
Datatype = ftString
Nome = 'smc'
Paramtype = ptInput
fim
item
Datatype = ftcursor
Nome = 'Preccur'
Paramtype = ptInputOutput
Valor = nulo
final>
fim
O método de execução é:
StoredProc1.Params.items [0] .Asstring: = Edit1.Text;
StoredProc1.params.items [1] .Asstring: = Edit2.text;
StoredProc1.Active: = false;
StoredProc1.Active: = True;
Use o TQUERY para executar as configurações relevantes do insertfuxJexample como:
Objetivo Query1: Tquey
DatabaseName = 'useproc'
Sql.Strings = (
'começar'
'InsertfuxJexample (sdm => m, smc =>: mc, preccur =>: reccur);'
'fim;')
Paramdata = <
item
Datatype = ftString
Nome = 'dm'
Paramtype = ptInput
fim
item
Datatype = ftString
Nome = 'mc'
Paramtype = ptInput
fim
item
Datatype = ftcursor
Nome = 'reccur'
Paramtype = ptInputOutput
final>
fim
O método de execução é:
Query1.params.items [0] .ASSTRING: = Edit3.Text;
Query1.params.items [1] .Asstring: = edit4.text;
Query1.active: = false;
Query1.active: = true;
Anexo: estrutura simples para criar procedimentos armazenados que retornam conjuntos de dados
1.
criar ou substituir o pacote testpackage é
Tipo testResultset é o cursor ref;
Testpackage final;
2.
criar ou substituir o teste de procedimento
(
precurgir no teste de teste .TestResultset
)
como
Começar
Abra Preccur para
selecione * da tabela;
fim;