|
|
|
новичок
      
участник
Last Login: 15.04.2003 9:34
Сообщ.: 9,
Visits: 100
|
|
Я знаю, что эта тема уже обсуждалась и приводились примеры, но мне это пока не помогло. Вопрос в следующем. Создать функцию, которая работала бы как View, но с возможностью задания параметров выбора. Могли бы Вы мне представить пример и как получать выборку из этой функции в Делфи. Я использую компоненты для доступа к Oracle DOA. И как использовать это в PL/SQL. Т.е. можно ли обрашаться к этой функции, как к просмотру или таблице с использованием SQL. Большое спасибо за внимание и, возможно, за ответы.
|
|
|
|
|
Forum Member
      
участник
Last Login: 13.03.2002 15:37
Сообщ.: 34,
Visits: 375
|
|
CREATE OR REPLACE PACKAGE "TU"."MY_PACK" is --тип ссылка на курсор --(тип курсора не указывается) type street_cursor is ref cursor; -- из функции function sp_test(pr_id integer) return street_cursor; --возврат через выходной параметр хп procedure sp_test1(pr_id integer, cur out street_cursor); end;
CREATE OR REPLACE PACKAGE BODY "TU"."MY_PACK" IS --возврат как результат функции
function sp_test(pr_id integer) return street_cursor is RS street_cursor; BEGIN --здесь может быть любой select, --для простоты и чистоты эксперимента, добавил колонку со значением 1 open RS for select street_Name,1 as Field1 from STREET where id>pr_id; return RS; END sp_test; --возврат через выходной параметр хп procedure sp_test1(pr_id integer, cur out street_cursor) is BEGIN --здесь может быть любой select, --для простоты и чистоты, добавил колонку со значением 2 open cur for select street_Name,CATEGORY,STREET_ID, 2 as Field2 from STREET where id>pr_id; END sp_test1; END MY_PACK;
Теперь на клиенте в OracleDataSet: //для функции OracleDataSet.SQL:='begin :result := tu.my_pack.sp_test(:pr_id); end;'; //для процедуры OracleDataSet.SQL:='begin tu.my_pack.sp_test1(:pr_id,:cur); end;'; //Variables cur и result должны быть типа Cursor OracleDataSet.Active:=true;--- и видим в сеточке курсор. Что и требовалось.
|
|
|
|