![]() |
|
Модераторы: LSD |
![]()
|
|
| BIZ0N |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 27.5.2006 Репутация: нет Всего: нет |
Субд Oracle 9i или Oracle 10g XE Release 10.2.0.1.0
Как реализовать нечто подобное вот этому:
P.S.: Заранее спасибо!!! Это сообщение отредактировал(а) BIZ0N - 8.6.2006, 20:39 |
||||
|
|||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
-------------------- It's better to burn out than to fade away. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 2 Всего: 151 |
Кстати, а я вроде слышал, что EXECUTE IMMEDIATE не следует злоупотреблять. Из-за чего? Из соображений производительности, или целостности, или еще каких-то?..
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| Sqlninja |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 353 Регистрация: 15.5.2006 Где: San Francisco, CA Репутация: 13 Всего: 13 |
Динамический SQL - это в общем не есть хорошо, но он имеет и свои преймущества. Основные недостатки - это невозможность проверки на этапе компиляции и, как правило, худшая производительность. Кстати, EXECUTE IMMEDIATE это еще ничего, в ранних версиях был только тормозной пакет DMBS_SQL.
Общее правило таково, что динамический SQL следует использовать лишь тогда когда невозможно обойтись статическим, как например в этом случае. А также: - при выполнении DDL операторов в PL\SQL - при ссылках на объекты не существующие на этапе компиляции - при выполнении динамических запросов или блоков - при динамических операциях с правами вызывающего Кажется, все. -------------------- It's better to burn out than to fade away. |
|||
|
||||
| batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 2 Всего: 151 |
Ясно, спасибо
-------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
| chief39 |
|
||||||||||||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Осмелюсь поднять старую тему, дабы избежать криков "поиск рулит!!"
Возникло подозрение, что DDL через execute immediate нельзя выполнять... Но раз уж в топике так написано.... Делюсь тем, что есть: Выполняю из консоли тоада
Сервер пишет:
Всё ок. Но надо динамически... И тут валится в самом простом кейсе: вот так:
вот так:
В том числе и если не писать ";" в самом стринге запроса. оракл - 10.1.0 Голова не варит совершенно, посему очень полагаюсь на помощь -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
||||||||||||
|
|||||||||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Ты чегой-то перемудрил в процедуре.
нормально отрабатывает, только не надо забывать про то что привилегию create user надо выдать явно, а не через роль. -------------------- 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. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Это не процедура - это неименованый кусок кода. скриптяра.
я под sys as sysdba это делаю... просто так создаёт нормально Добавлено @ 12:32 LSD, если создавать процедурой - отрабатывает.... Блин.. создавать процедуру для создания юзеров... кампилец.... без процедурной оболочки не пашет Придётся в начале скрипта создавать процедуру и в конце дропать. КРИК К ЗВЁЗДАМ: НУ ЧЁ ЗА ХЕРНЯ?!?!?! ( Откуда такая несправедливость?) -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| chief39 |
|
||||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
ЗЫ: не совсем в тему, но...
Инициализация таблиц согласно мануалам должна проходить вот так:
Но...
Подумалось - а вдруг фигурные? - но, фик. Если поэлементно инициализировать потом - один елемент пролеает - при переборе ругается Добавлено @ 13:06 В принципе сделал, но вопросы всё равно для меня интересные Да простят меня "оракулы", по после сибейса очччень неудобная штука -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
||||
|
|||||
| LSD |
|
||||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Зачем тебе в скрипте понадобилось execute immediate? Там же и без этого можно выполнять операторы DDL? Да и как анонимный 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. |
||||||
|
|||||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Создаётся много схем. Названия формируются динамически. У меня валится Ну... в коде есть. Пытаюсь создать и сразу проинициализировать список. Но валится Эттто ещё кто??? -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Мой тестовый пример, или твой?
Прям в секции объявления Так нельзя. В секции объявления, переменные только объявляются, иниализация в блоке кода. Страшные люди, умеют своим пением сводить людей с ума: люди начинают биться головой о стену, у них начинаются приступы тошноты и беспричинной агресси. -------------------- 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. |
|||
|
||||
| chief39 |
|
||||||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Блин... если бегин-эндом обрамить - пашет С меня пиво
А вот ТУТ говорили что можно
Я и поверил было...
Это из какого-то анека? Или фэнтези? Что за фабрика звёзд? -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
||||||
|
|||||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Ээээ, ты туда не читай, ты сюда читай, а то савсэм обманут будешь Неа, черное (Гиннес) Счастливый человек, не знает что такое Фабрика звезд (на МузТВ очень интересный факт показали, рядом с Фабрикой Звезд находится завод по производству слуховых аппаратов -------------------- 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. |
|||
|
||||
| chief39 |
|
||||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Ок ;) Приезжай
Мдя -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
||||
|
|||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Ты сегодня в ударе Если тебе надо создать ассоциативный массив, то делай это так:
Если просто вложеную таблицу:
-------------------- 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. |
||||
|
|||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Так и делаю. Но при переборе от 1 до COUNT на пропущенных элементах ругается Дык я ведь такой же кусок кода привёл вроде.... (хотя в оракле я уже ни в чём не уверен И он валится как я написал выше -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Нет не такой же, у тебя тип объявлен как ассоциативный массив, а инициализируешь ты его как простую вложенную таблицу. Завтра гляну (домой пора: сегодня пиво и блюз -------------------- 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. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Курение мануалов дало следующий результат
Итерацию по ассоциативным массивам надо делать так:
-------------------- 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. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Спасиб Переделаю, как вернусь из Карпат С меня оба пива -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
Всё. Сделал как таблицу
Ну ййяво нафик Теперь душа чиста. Спасибки -------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 18 Всего: 538 |
Афигеть, он еще в горах катется Пожалуйста -------------------- 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. |
|||
|
||||
| chief39 |
|
|||
![]() карманная тигра ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1631 Регистрация: 20.5.2005 Где: Киев Репутация: нет Всего: 77 |
-------------------- Люди - это свечи. Они либо горят, либо их - в жопу!(с) |
|||
|
||||
![]()
|
| Правила форума "Oracle" | |
|
|
Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Oracle | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |