
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
16.02.2017, 11:24
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
Добрый день. Прошу помощи, т.к. второй день бьюсь с проблемой. Задача создать ф-ю возвращающую список сотрудников (т.е. массив), у которых SALARY больше заданной. (Желательно через явный курсор). Пробовал по всякому: и через пакет создвать типы, так и через явное создание (CREATE TYPE...) create or replace package emp_pkg is TYPE emp_rec IS RECORD (last_name employees.last_name%type, salary employees.salary%type); TYPE emp_tab IS TABLE OF emp_rec; function var_emp_sal (p_sal IN employees.salary%type default null) return emp_tab pipelined; end emp_pkg; create or replace package body emp_pkg is function var_emp_sal (p_sal IN employees.salary%type) return emp_tab is cursor cur_emp is select t.last_name, t.salary from employees t where t.salary > p_sal; v_emp cur_emp%rowtype; v_emp_tab emp_tab; begin open cur_emp; loop fetch cur_emp into v_emp; v_emp_tab := emp_tab(v_emp.last_name, v_emp.salary); exit when cur_emp%notfound; end loop; close cur_emp; return v_emp_tab; end ; end emp_pkg; Как бы я не делал, все сводится к одному: Ошибка: PLS-00306: ошибочное число или типы аргументов при обращении к 'EMP_TAB'. (на выделенной строке) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 11:47
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
Aleksey31, у плскл массива нет конструктора. а занафиг вообще массив, да и функция тоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 11:51
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
школьное задание, Я вас не понял. Вот описан массив: TYPE emp_rec IS RECORD (last_name employees.last_name%type, salary employees.salary%type); TYPE emp_tab IS TABLE OF emp_rec; А зачем нужно и т.д. это отдельная тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 11:58
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
Aleksey31А зачем нужно и т.д. это отдельная тема.вот прийдешь ты к врачу - втираю мазь в пятку, а ухо все равно болит. Полагаешь он тебе пакажет как правильно втирать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 12:25
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
терапедAleksey31А зачем нужно и т.д. это отдельная тема.вот прийдешь ты к врачу - втираю мазь в пятку, а ухо все равно болит. Полагаешь он тебе пакажет как правильно втирать? Прошу не флудить. Лучше бы дельное что нибудь сказал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 14:42
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
Aleksey31Добрый день. Прошу помощи, т.к. второй день бьюсь с проблемой. Задача создать ф-ю возвращающую список сотрудников (т.е. массив), у которых SALARY больше заданной. (Желательно через явный курсор). Пробовал по всякому: и через пакет создвать типы, так и через явное создание (CREATE TYPE...) create or replace package emp_pkg is TYPE emp_rec IS RECORD (last_name employees.last_name%type, salary employees.salary%type); TYPE emp_tab IS TABLE OF emp_rec; function var_emp_sal (p_sal IN employees.salary%type default null) return emp_tab pipelined ; end emp_pkg; create or replace package body emp_pkg is function var_emp_sal (p_sal IN employees.salary%type) return emp_tab is cursor cur_emp is select t.last_name, t.salary from employees t where t.salary > p_sal; v_emp cur_emp%rowtype; v_emp_tab emp_tab; begin open cur_emp; loop fetch cur_emp into v_emp; v_emp_tab := emp_tab(v_emp.last_name, v_emp.salary); exit when cur_emp%notfound; end loop; close cur_emp; return v_emp_tab; end ; end emp_pkg; Как бы я не делал, все сводится к одному: Ошибка: PLS-00306: ошибочное число или типы аргументов при обращении к 'EMP_TAB'. (на выделенной строке) pipelined лишний ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 14:48
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
efendi, поспешил немногою надо так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 14:59
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
efendiefendi, поспешил немногою надо так: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Благодарю тебя!!! pipelined остался с прошлого раза (через него также пробовал) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 15:06
|
|||
|---|---|---|---|
Проблема с типами в FUNCTION. |
|||
|
#18+
efendi Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Весь этот говнокод заменяется одной командой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 15:20
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
efendi, опять ступор. Видимо совсем дурной..) Пытаюсь вызвать(проверить) : select * from table(emp_pkg.var_emp_sal(12000)) Ошибка: ORA-00902 Неверный тип данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 15:25
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
Elic, спасибо. ПРосто не мог понять в чем проблема, дело принципа. А так еще лучше если без курсора: select t.last_name, t.salary BULK COLLECT INTO v_emp_tab from employees t where t.salary > p_sal; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 16:08
|
|||
|---|---|---|---|
Проблема с типами в FUNCTION. |
|||
|
#18+
Aleksey31select * from table(emp_pkg.var_emp_sal(12000)) Ошибка: ORA-00902 Неверный тип данныхНе знает SQL никаких ни PL/SQL-записей, ни PL/SQL-коллекций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 16:11
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
Elic, а как же тогда работает например тут: https://habrahabr.ru/post/119996/ Делал по пример можно сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 16:18
|
|||
|---|---|---|---|
Проблема с типами в FUNCTION. |
|||
|
#18+
Aleksey31, а там pipelined не лишний. даже списать не получается ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 16:19
|
|||
|---|---|---|---|
Проблема с типами в FUNCTION. |
|||
|
#18+
Aleksey31а как же тогда работает например тут: https://habrahabr.ru/post/119996/ Делал по пример можно сказать. Aleksey31pipelined остался с прошлого разаЗа pipelined скрыто много магии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
16.02.2017, 16:19
|
|||
|---|---|---|---|
|
|||
Проблема с типами в FUNCTION. |
|||
|
#18+
123йй, уже решили проблему составления. Пепилинд лишний(нечаянно остался). Теперь проблема с вызовом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=52&tablet=1&tid=1886421]: |
0ms |
get settings: |
7ms |
get forum list: |
24ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
103ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 403ms |

| 0 / 0 |
