![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
DEER |
|
||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
Oracle 8
среда TOAD Пусть есть пакет с подпрограммами PC_STAT хочу добавить в него ещё одну функцию, которая должна возвращать набор данных(таблица, в которой поля буду в функции подсчитывать) в SPEC пишу
в BODY пишу
компилирую сначала SPEC потом BODY все проходит без ошибок... как мне теперь запустить её и посмотреть результат? Если пишу в SQL Editor'е запрос
qqq - схема Oracl выдаёт ошибку:
Если пишу такой запрос
то
запускать пытаюсь и как Excecute Statement и как Excecute Script одна фигня.. Не подскажите в чем проблема? Это сообщение отредактировал(а) DEER - 23.3.2006, 15:53 -------------------- |
||||||||||||
|
|||||||||||||
DEER |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
попробовал ещё одним способом
говорит
![]() -------------------- |
||||
|
|||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 2 Всего: 151 |
А если без имени схемы попробовать?
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
DEER |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
тоже самое,
причем пишу PS_STAT. жду секунду повляестся список, в нём ЕСТЬ эта функция...... а может дело в том что это функция а не процедура? -------------------- |
|||
|
||||
LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
В PL/SQL нельзя игнорировать возвращаемое значение. Кошерный способ такой:
И еще у тебя ошибка в функции, надо так:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
DEER |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
Спасибо, заработало!!!
Только теперь блок
просто выполняется и всё, т.е. результат не выводится никуда.. ![]() а задумка была такая: мне надо вывести в одном запросе даныые, они берутся из одной таблицы, но два раза т.е. примерно так
этот запрос подвисает часа на три. если же выпонить два запроса
и
то каждый по отдельности выполняется за 5 минут т.е. оба за 10 минут. Логично было бы написать ф-ю, которая всё это дело считала бы за два захода, потом соединяла бы их в одну таблицу и печатала результат. Функцию запускаьб я научился при помощи LSD, а как теперь получить из неё значения, как будто это был бы запрос ?? ![]() -------------------- |
||||||||
|
|||||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Результат первого запроса не эквивалентен результатам вторых 2-х. Т.к. первый порождает декартово произведение таблиц, а второй и третий нет.
Так что поподробней: скрипт создания таблицы, текст запроса, и что надо олучить в итоге. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
DEER |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
млин комерческая тайна
![]() короче есть список операторов
каждому оператору соответствует свой диапазон номеров
в БД пишутся звонки (как они пишутся не важно, и вся структура таблицы куда пишутся тоже ![]()
нужно получить список где будет - оператор, - продолжительность входящих звонков, - продолжительность исходящих звонков. запрос написал такой для исходящих звонков
для входящих звонков
теперь это дело хочется в функции объеденить и вывести в DataGrid Toad'а записей там видимо - невидимо ![]() Нормуль объяснил? ![]() Добавлено @ 13:37 тока проблема не в этом. как функцию написать я уж сооброжу, мне бы узнать как эту функцию вызвать, чтобы результат её работы был как у запроса, те пишу что то в SQLEditor'е, запускаю, результат напечан в DataGrid Это сообщение отредактировал(а) DEER - 27.3.2006, 08:36 -------------------- |
||||||||||
|
|||||||||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
По поводу производительности, не выйдет у тебя сделать объединение быстрее чем это сделает сам Oracle. Лучше всего просто попробовать оптимизировать запрос: построить индексы если это уже не сделано, декартово произведение заменить на join и т.п. И по поводу запросов те два запроса что ты привел полностью идентичны.
А получить коллекцию в виде курсора можно так:
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
DEER |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 749 Регистрация: 12.4.2005 Где: г. Рязань Репутация: нет Всего: 13 |
Упс. ошипка вышла ![]() проблему решил так. Уже в програме посылаю два запроса на сервер, и в программе же объединяю результаты запросов. Просто не оставалось ничего другого, надо было сдавать работающий отчет.... -------------------- |
|||
|
||||
BIZ0N |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.5.2006 Репутация: нет Всего: нет |
Помогите начинающему
![]() проблема похожая. поэтому создавать новую тему не стал. субд Oracle 9i HOME использую PL*SQL Worksheet + пытаюсь освоить PL/SQL Developer
В PL/SQL Developer обьект создается без ошибок, а вот в PL*SQL Worksheet кричит, что тело создано с ошибками компиляци... да и вообще последний глючит, по запросу:
PL/SQL Developer выдает более сотни пакетов, и среди них rrrac_admin со статусом VALID, а вот PL*SQL Worksheet находит только 2 обьекта, при этом rrrac_admin имеет статус INVALID ![]() Кроме того, не могу проверить работу функции в PL/SQL Developer ![]() использую конструкцию вида (пишу по памяти, комп с инетом и комп с Oracle находяться далеко друг от друга ![]()
PL/SQL Developer вываливает снизу список переменных (а именно result)? а вот выборки там не видно ... видимо всетаки глючит не PL*SQL, а PL/SQL Developer ![]() |
||||||
|
|||||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 2 Всего: 151 |
Вполне возможно, что причина в слешах ('/'). По крайней мере, в PL/SQL Developer этот код будет корректно выполнен в Command Window и ошибочно - в SQL Window.
Посмотри в PL/SQL Developer'е заголовок пакета rrrac_admin. не исключено, что к нему там прилеплена оставшаяся часть файла. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
BIZ0N |
|
|||
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.5.2006 Репутация: нет Всего: нет |
не ... в девелопере работаю только в sql window (имею склонность к альтруизму
![]() а вот в родном для оракла pl*sql у меня выполнить этот код не получается ... и вообще в отличии от девелопера он показывает что тело пакета - "INVALID" ![]() почему такая разница ? и там и там работаю из под пользователя system... почему один инструмент по запросу:
мне выберает 2 пакета, а другой около сотни (на глаз прикинул ![]() P.S.: ОФФТОП: после выполнения таких пакетных процедур нухно закрывать курсор который они возвращают ? |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 2 Всего: 151 |
Я же сказал, проверь текст пакета в девелопере. У нас бывало такое, что пакет виден, как валидный, а исходник у него неправильный.
И попробуй выполнить тот же скрипт в Command window девелопера. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
1) Не используйте PL*SQL Workshit.
2) только 2 пакета под SYSTEM быть не может. покрутите скроллинг. -------------------- It's better to burn out than to fade away. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Oracle" | |
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Oracle | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |