1. Используйте хранимые процедуры для возврата наборов данных
Набор данных, возвращаемый хранимыми процедурами в Oracle, возвращается параметрами данных типа курсора REF, а параметры, которые возвращают данные, должны быть типа или в типе OUT.
Поскольку тип данных параметра не может быть непосредственно указан при определении хранимой процедуры: ref cursor, курсор ссылки сначала переопределяется следующим методом:
Создать или заменить пакет fuxjpackage
Тип fuxjresultset - ref cursor;
-Ты также можешь определить другой контент
конец fuxjpackage;
Снова определите хранимую процедуру:
Создать или заменить процедуру UpdateFuxJexample (SDM в char, smc in char, preccur in out fuxjpackage.fuxjresultset)
как
Начинать
Обновление fuxjexample set mc = smc, где dm = sdm;
Если sql%rowcount = 0, тогда
откат;
Открыть предварительную оценку для
Выберите «0» из двойного;
еще
совершить;
Открыть предварительную оценку для
выберите «1» из двойного;
конец, если;
конец;
и
Создать или заменить процедуру INSERTFUXJExample (SDM в char, smc in char, preccur in out fuxjpackage.fuxjresultset)
как
Начинать
вставить в значения fuxjexample (dm, mc) (SDM, SMC);
совершить;
Открыть предварительную оценку для
выберите * из fuxjexample;
конец;
2. Вызовите хранимую процедуру, которая возвращает набор данных в Delphi
Хранение, которое выполняет набор данных возврата, может быть вызвана через управление TSTOREDPROC или TQUERY, набор данных возвращается через параметры управления TSTOREDPROC или TQUERY. ptinputOutput.
Используйте tstoredProc, чтобы выполнить соответствующие настройки UpdateFuxJexample AS:
Object StoreDproc1: tStoredProc
DatabaseName = 'useProc'
StoredProcname = 'updatefuxjexample'
ParamData = <
элемент
Datatype = ftstring
Name = 'sdm'
Paramtype = ptinput
конец
элемент
Datatype = ftstring
Name = 'smc'
Paramtype = ptinput
конец
элемент
DataType = ftcursor
Name = 'preccur'
Paramtype = ptinputOutput
Значение = NULL
конец>
конец
Метод выполнения:
StoreDproc1.params.items [0] .asstring: = edit1.text;
StoreDproc1.params.Items [1] .asstring: = edit2.text;
StoreDproc1.active: = false;
StoreDproc1.active: = true;
Используйте TQuery, чтобы выполнить соответствующие настройки InsertFuxJexample AS:
Объект Query1: Tquery
DatabaseName = 'useProc'
Sql.strings = (
'начинать'
'Insertfuxjexample (sdm => m, smc =>: mc, preccur =>: reccur);'
'конец;')
ParamData = <
элемент
Datatype = ftstring
Name = 'dm'
Paramtype = ptinput
конец
элемент
Datatype = ftstring
Name = 'mc'
Paramtype = ptinput
конец
элемент
DataType = ftcursor
Name = 'reccur'
Paramtype = ptinputOutput
конец>
конец
Метод выполнения:
Query1.params.items [0] .asstring: = edit3.text;
Query1.params.items [1] .asstring: = edit4.text;
Query1.active: = false;
Query1.active: = true;
Если sql%rowcount = 0, тогда
откат;
Открыть предварительную оценку для
Выберите «0» из двойного;
еще
совершить;
Открыть предварительную оценку для
выберите «1» из двойного;
конец, если;
конец;
и
Создать или заменить процедуру INSERTFUXJExample (SDM в char, smc in char, preccur in out fuxjpackage.fuxjresultset)
как
Начинать
вставить в значения fuxjexample (dm, mc) (SDM, SMC);
совершить;
Открыть предварительную оценку для
выберите * из fuxjexample;
конец;
2. Вызовите хранимую процедуру, которая возвращает набор данных в Delphi
Хранение, которое выполняет набор данных возврата, может быть вызвана через управление TSTOREDPROC или TQUERY, набор данных возвращается через параметры управления TSTOREDPROC или TQUERY. ptinputOutput.
Используйте tstoredProc, чтобы выполнить соответствующие настройки UpdateFuxJexample AS:
Object StoreDproc1: tStoredProc
DatabaseName = 'useProc'
StoredProcname = 'updatefuxjexample'
ParamData = <
элемент
Datatype = ftstring
Name = 'sdm'
Paramtype = ptinput
конец
элемент
Datatype = ftstring
Name = 'smc'
Paramtype = ptinput
конец
элемент
DataType = ftcursor
Name = 'preccur'
Paramtype = ptinputOutput
Значение = NULL
конец>
конец
Метод выполнения:
StoreDproc1.params.items [0] .asstring: = edit1.text;
StoreDproc1.params.Items [1] .asstring: = edit2.text;
StoreDproc1.active: = false;
StoreDproc1.active: = true;
Используйте TQuery, чтобы выполнить соответствующие настройки InsertFuxJexample AS:
Объект Query1: Tquery
DatabaseName = 'useProc'
Sql.strings = (
'начинать'
'Insertfuxjexample (sdm => m, smc =>: mc, preccur =>: reccur);'
'конец;')
ParamData = <
элемент
Datatype = ftstring
Name = 'dm'
Paramtype = ptinput
конец
элемент
Datatype = ftstring
Name = 'mc'
Paramtype = ptinput
конец
элемент
DataType = ftcursor
Name = 'reccur'
Paramtype = ptinputOutput
конец>
конец
Метод выполнения:
Query1.params.items [0] .asstring: = edit3.text;
Query1.params.items [1] .asstring: = edit4.text;
Query1.active: = false;
Query1.active: = true;
Приложение: простая структура для создания хранимых процедур, которые возвращают наборы данных
1
Создать или заменить TestPackage Package
Тип Testresultset - ref cursor;
Конечный тестовый пака;
2
Создать или заменить тест процедуры
(
предварительно
)
как
Начинать
Открыть предварительную оценку для
выберите * из таблицы;
конец;