powered by simpleCommunicator - 2.0.39     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На счет процедуры на PL/SQL
5 сообщений из 5, страница 1 из 1
На счет процедуры на PL/SQL
    #32004749
Alex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как создать процедуру или функцию на PL/SQL чтобы она возвращала в качестве значения - таблицу
...
Рейтинг: 0 / 0
На счет процедуры на PL/SQL
    #32004960
Arcady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если под таблицей понимать данные произвольного запроса (а не тип TABLE %) ),
то это делается с помощью курсоров:

--описание курсорного типа
create or replace package Some_Pack as
type c_type is ref cursor;
end;

--данные select'a возвращаются процедурой Proc1 через параметр Param1
create or replace procedure Proc1(Param1 in out Some_Pack.c_type)
as
begin
open Param1 for
select * from v$session;--тот самый произвольный запрос
end;
...
Рейтинг: 0 / 0
На счет процедуры на PL/SQL
    #32005567
maski_v
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так то оно так, да вот курсор открытый на сервере останется. А его же нужно закрывать.
А вот в чистом виде таблицу возвратить как? если без курсоров?
...
Рейтинг: 0 / 0
На счет процедуры на PL/SQL
    #32007843
Andrew
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использовать MIcrosoft ODBC Driver for Oracle, то можно написать сле-
дующее:
Create Package Pack
is
type MyTab is Table of integer;
Procedure Prc (Tb out MyTab);
end Pack;
Package body Pack is
Procedure Prc(Tb out MyTab)
is
begin
...end;
end;
И, в SQL-команде набрать:

{call Pack.Prc({resultset 100,Tb})}

Под C++ Builder такое работает, когда используется ADO с провайдером
MSDASQL.
HTH,
Andrew
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
На счет процедуры на PL/SQL
    #32038060
u333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Arcady:

а какой будет код на клиенте?

я не могу разобраться как правильно передать параметры

вот пример кода на VB

Dim con,rs,cmd
set con = CreateObject("ADODB.Connection")
set rs = CreateObject("ADODB.Recordset")
set cmd = CreateObject("ADODB.Command")

con.Open "Provider=OraOLEDB.Oracle;Data Source=......."
Cmd.ActiveConnection = Con
cmd.CommandText = "{call Proc1()}"
set rs = cmd.execute

В этом случае выдает ошибку Ошибочное число или типы аргументов при обращении к Proc1
Если надо при вызове в cmd создать параметр - то как это правильно сделать
Еще в докоментации упоминается cmd.Properties("PLSQLRset") = TRUE, но в этом случае у меня выдается ошибка Item cannot be found in collection ...
т.е. нет у меня такого параметра
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / На счет процедуры на PL/SQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]