﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Oracle / Базы данных  / Повторение: возврат функцией выборки записей / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 03 Dec 2008 05:54:57 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Повторение: возврат функцией выборки записей</title><link>http://www.relib.com/forums/Topic741821-21-1.aspx</link><description>CREATE OR REPLACE PACKAGE &amp;quot;TU&amp;quot;.&amp;quot;MY_PACK&amp;quot;    is&lt;BR&gt;   --тип ссылка на курсор&lt;BR&gt;   --(тип курсора не указывается)&lt;BR&gt;   type street_cursor is ref cursor;&lt;BR&gt;   -- из функции&lt;BR&gt;   function  sp_test(pr_id integer) return street_cursor;&lt;BR&gt;   --возврат через выходной параметр хп&lt;BR&gt;   procedure sp_test1(pr_id integer, cur out street_cursor);&lt;BR&gt;end;&lt;BR&gt;&lt;BR&gt;CREATE OR REPLACE  PACKAGE BODY &amp;quot;TU&amp;quot;.&amp;quot;MY_PACK&amp;quot; IS&lt;BR&gt;--возврат как результат функции&lt;BR&gt;&lt;BR&gt;function sp_test(pr_id integer) return street_cursor&lt;BR&gt; is&lt;BR&gt; RS street_cursor;&lt;BR&gt; BEGIN&lt;BR&gt;  --здесь может быть любой select,&lt;BR&gt;  --для простоты и чистоты эксперимента, добавил колонку со  значением 1&lt;BR&gt;  open RS for select street_Name,1 as Field1 from STREET where id&amp;gt;pr_id;&lt;BR&gt;  return RS;&lt;BR&gt; END sp_test;&lt;BR&gt; &lt;BR&gt;--возврат через выходной параметр хп&lt;BR&gt;procedure sp_test1(pr_id integer, cur out street_cursor)&lt;BR&gt;is&lt;BR&gt; BEGIN&lt;BR&gt;  --здесь может быть любой select,&lt;BR&gt;  --для простоты и чистоты, добавил колонку со  значением 2&lt;BR&gt;  open cur for select street_Name,CATEGORY,STREET_ID, 2 as Field2 from STREET where id&amp;gt;pr_id;&lt;BR&gt; END sp_test1;&lt;BR&gt;END MY_PACK;&lt;BR&gt;&lt;BR&gt;Теперь на клиенте в OracleDataSet:&lt;BR&gt;//для функции&lt;BR&gt;OracleDataSet.SQL:='begin :result := tu.my_pack.sp_test(:pr_id); end;';&lt;BR&gt;//для процедуры&lt;BR&gt;OracleDataSet.SQL:='begin tu.my_pack.sp_test1(:pr_id,:cur); end;';&lt;BR&gt;//Variables cur и result должны быть типа Cursor&lt;BR&gt;OracleDataSet.Active:=true;--- и видим в сеточке курсор. Что и&lt;BR&gt;требовалось.</description><pubDate>Fri, 22 Feb 2002 11:02:00 GMT</pubDate><dc:creator>Снежок</dc:creator></item><item><title>Повторение: возврат функцией выборки записей</title><link>http://www.relib.com/forums/Topic741821-21-1.aspx</link><description>Я знаю, что эта тема уже обсуждалась и приводились примеры, но мне это пока не помогло.&lt;BR&gt;Вопрос в следующем. Создать функцию, которая работала бы как View, но с возможностью задания параметров выбора. Могли бы Вы мне представить пример и как получать выборку из этой функции в Делфи. Я использую компоненты для доступа к Oracle DOA. И как использовать это в PL/SQL. Т.е. можно ли обрашаться к этой функции, как к просмотру или таблице с использованием SQL. Большое спасибо за внимание и, возможно, за ответы.</description><pubDate>Fri, 15 Feb 2002 10:21:00 GMT</pubDate><dc:creator>OlegBan</dc:creator></item></channel></rss>