Повторение: возврат функцией выборки записей
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Повторение: возврат функцией выборки записей Expand / Collapse
Автор
Сообщение
15.02.2002 10:21
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 15.04.2003 9:34
Сообщ.: 9, Visits: 100
Я знаю, что эта тема уже обсуждалась и приводились примеры, но мне это пока не помогло.
Вопрос в следующем. Создать функцию, которая работала бы как View, но с возможностью задания параметров выбора. Могли бы Вы мне представить пример и как получать выборку из этой функции в Делфи. Я использую компоненты для доступа к Oracle DOA. И как использовать это в PL/SQL. Т.е. можно ли обрашаться к этой функции, как к просмотру или таблице с использованием SQL. Большое спасибо за внимание и, возможно, за ответы.
Сообщ. #741821
22.02.2002 11:02
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum 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;--- и видим в сеточке курсор. Что и
требовалось.
Сообщ. #742510
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 11:04