Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Курсор и переменное число параметров 
V
    Опции темы
LSD
Дата 14.3.2011, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Есть анонимный PL/SQL блок:
Код

DECLARE

  CURSOR an_cursor IS
    SELECT ...
      FROM ...
     WHERE (col1 IN (...) OR col2 IN (...));

BEGIN

  FOR item IN an_cursor
  LOOP
    ...
  END LOOP;

END;

Вопрос: как объявить курсор так, чтобы туда можно было передать переменное число параметров для IN (TABLE или VARRAY не принципиально)? Проблема в том, что объявление курсора не работает с типами объявленными локально, требует объявлять их глобально, а этот вариант не подходит.


--------------------
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.
PM MAIL WWW   Вверх
Zloxa
Дата 14.3.2011, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(LSD @  14.3.2011,  19:08 Найти цитируемый пост)
Проблема в том, что объявление курсора не работает с типами объявленными локально, требует объявлять их глобально, а этот вариант не подходит. 

Если ты не можешь создать объекта схемы(пусть в схемме гдето сбоку) и не можешь найти подходящего из существующих(select * from all_type_versions where upper(text) like '%TABLE OF NUMBER%'), у меня идей  - нет.

Разве что формировать запрос динамически, либо же представить коллекцию в виде xml.

Добавлено через 9 минут и 24 секунды
ну еще, на крайняк, трюкануть со строкой можно 
Код

where instr(',1,2,3,4,',','||col||',') > 0

Есесно - не продуктивное решение.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 15.3.2011, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата(Zloxa @  14.3.2011,  20:21 Найти цитируемый пост)
Если ты не можешь создать объекта схемы(пусть в схемме гдето сбоку) и не можешь найти подходящего из существующих(select * from all_type_versions where upper(text) like '%TABLE OF NUMBER%'), у меня идей  - нет.

Это одноразовый скрипт и DBA не одобрят создание объектов в схеме. Завязываться на какие-то типы которые не в нашей или системной схеме, тоже нехорошо.


Ну нет, так нет. Просто думал, может есть какое очевидное решение, которое я проглядел.


--------------------
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.
PM MAIL WWW   Вверх
Zloxa
Дата 15.3.2011, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 37
Всего: 161



Цитата(LSD @  15.3.2011,  16:48 Найти цитируемый пост)
DBA не одобрят создание объектов в схеме

Я читал о таких... на форумах.

Я не знаю.. у нас на проде есть отдельная схема, где разрабы могут выполнять свои упражнения.
Разрабы могут создавать там свои объекты схемы, но сохранности этой схемы ДБА не обещает.
Я не однократно во всяких конверсионных, одноразовых, скриптах, пускаемых саппотром из под прода использовал объекты из этой схемы.

Но у нас один аппликейшин - одна инсталляция. Если бы инсталляций аппликейшнов было бы больше, такой подход не хлял бы.

С другой стороны, пачсеты же както накатываются на много инстов? Создание архиважного и архинужного table of varhcar2 можно причислить к какому нить багфиксу.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LSD
Дата 15.3.2011, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Ну не то чтобы совсем запретят, но будут вопросы: а зачем, а без этого совсем никак. Тут как бы с одной стороны необходимость скопипастить одни и те же ID-шники в нескольких местах скрипта, с другой необходимость убеждать DBA.

Мы однажды 2 месяца добивались прав на пакет DBMS_LOCK, только когда пригрозили создать хранимку на Java, они испугались и дали права smile


--------------------
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.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0457 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.