Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Функция возращающая много значений  [new]
fiz_msu
Member

Откуда:
Сообщений: 18
Прошу помощи в решении задачи.
Схема scott необходимо написать функцию, которая будет возвращать имена сотрудников при входном параметре номер отдела.
Функция на вход получает значение '10' и выдает имена всех сотрудников в 10 отделе.
функция get_name
13 мар 12, 09:36    [12236378]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54395
fiz_msu
выдает имена всех сотрудников в отделе
в каком виде выдаёт?

или User-Defined Aggregate Functions,
или pipelined functions
13 мар 12, 09:46    [12236425]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
ref cursor ?
13 мар 12, 09:52    [12236465]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
А ты как пробывал?
13 мар 12, 09:58    [12236492]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
publexus
Member

Откуда: Москва
Сообщений: 955
andreymx
или User-Defined Aggregate Functions,
или pipelined functions


Если судить об уровне знания тематики ТС по постановке вопроса, данные уточнения только еще больше загонят его в ступор.
Мне кажется ему надо просто:
create or replace function get_name(dep_no number) return varchar2
  s varchar2(32000) := '';
begin
  for rec in (select * from emp where depno=dep_no) loop
    s := s || nvl2(s,',','') || rec.emp_name;
  end loop;
  return s;
end
13 мар 12, 09:58    [12236493]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
fiz_msu
Member

Откуда:
Сообщений: 18
andreymx,

нужно выдать в таком в виде, чтобы потом полученный результат мог присваиваться переменными в select пользователей
select get_name(deptno) from emp
конечно я утрирую, но данный пример мне очень может в моей работе.
где по коду дома выбирается список квартир (а то один и тот же кусок кода достало писать различаемый только одной переменной.)
да и функции хочу по изучать.
13 мар 12, 09:59    [12236496]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
Ramin Hashimzade
Member

Откуда: Азербайджан, Баку
Сообщений: 9979
Блог
publexus
andreymx
или User-Defined Aggregate Functions,
или pipelined functions


Если судить об уровне знания тематики ТС по постановке вопроса, данные уточнения только еще больше загонят его в ступор.
Мне кажется ему надо просто:
create or replace function get_name(dep_no number) return varchar2
  s varchar2(32000) := '';
begin
  for rec in (select * from emp where depno=dep_no) loop
    s := s || nvl2(s,',','') || rec.emp_name;
  end loop;
  return s;
end

С таким успехом то ему просто надо
Select * from my table where deptno=10
13 мар 12, 10:01    [12236507]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
publexus
Member

Откуда: Москва
Сообщений: 955
fiz_msu
andreymx,

нужно выдать в таком в виде, чтобы потом полученный результат мог присваиваться переменными в select пользователей
select get_name(deptno) from emp
конечно я утрирую, но данный пример мне очень может в моей работе.
где по коду дома выбирается список квартир (а то один и тот же кусок кода достало писать различаемый только одной переменной.)
да и функции хочу по изучать.

Может лучше сначала русский язык по изучать?!
13 мар 12, 10:02    [12236517]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
fiz_msu
Member

Откуда:
Сообщений: 18
create or replace function get_name(dep_no number) return varchar2
s varchar2(32000) := '';
begin
for rec in (select * from emp where depno=dep_no) loop
s := s || nvl2(s,',','') || rec.emp_name;
end loop;
return s;
end

Спасибо всем огромное за помощь. Ушел дальше изучать русский и oracle.
13 мар 12, 10:06    [12236532]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
-2-
Member

Откуда:
Сообщений: 15330
publexus
Может лучше сначала русский язык по изучать?!
нынче в мгу берут по результатм Единого Гэ
13 мар 12, 10:18    [12236598]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
SysOper
Member

Откуда: M
Сообщений: 9760
fiz_msu
create or replace function get_name(dep_no number) return varchar2
s varchar2(32000) := '';
begin
for rec in (select * from emp where depno=dep_no) loop
s := s || nvl2(s,',','') || rec.emp_name;
end loop;
return s;
end

Спасибо всем огромное за помощь. Ушел дальше изучать русский и oracle.


Функцию вам уже давно написали индусы, называется она LISTAGG
13 мар 12, 12:49    [12238023]     Ответить | Цитировать Сообщить модератору
 Re: Функция возращающая много значений  [new]
Alex__kK
Member

Откуда:
Сообщений: 240
SysOper,

Ну уж не так и давно, в Oracle 11g Release 2
13 мар 12, 13:46    [12238697]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить