![]() |
|
Модераторы: LSD |
![]()
|
|
| MasterOfCode |
|
|||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: нет Всего: 27 |
Добрый день всем.
Хочу увидеть результат в виде таблицы. Делаю так:
Ругается, просит into вставить, а мне незачем однострочный ответ. Вопрос, как делать правильно? -------------------- ![]() |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
создай процедуру и возвращай в курсор.
|
|||
|
||||
| MasterOfCode |
|
|||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: нет Всего: 27 |
И что, приходится всегда так извращаться с курсорами? В MS SQL с этим намного проще. -------------------- ![]() |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
||||
|
||||
| MasterOfCode |
|
|||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: нет Всего: 27 |
Потому что чтоб написать обычную процедуру, необходимо создавать курсор, его заполнять и выводить. Неужели нельзя сделать проще? -------------------- ![]() |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
я просто не понимаю чего тут сложного, написание open cursor как-то усложняет работу? По мне так нормально.
Это сообщение отредактировал(а) azesmcar - 7.4.2010, 13:22 |
|||
|
||||
| MasterOfCode |
|
||||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: нет Всего: 27 |
К примеру как это выглядит в MS SQL
А в оракл нужно еще какие sys_refcursor использовать. -------------------- ![]() |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
ну и что тут сложного? код может быть не рабочим, писал тут и на память, нет оракла под рукой. |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
MasterOfCode, для того что бы написать запрос с параметрами не требуется писать процедурный код:
обратите внимание на двоеточие. соответственно передавать значения в эти параметры будете средствами вашего инструмента или библиотек котрые используете для работы с оракл. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
DimW
Да конечно, но я думаю запросы в любом случае лучше писать в процедурах и возвращать через курсор так как 1. В случае вызова запроса извне он становится динамическим, а значит тратится дополнительное время на компиляцию. 2. Так нагляднее выглядит - передал аргументы и получил результат. 3. Код становится чище и аккуратнее, если в нем вместо огромных запросов стоит вызов процедуры. 4. Код легче отлаживать и проверять, запустил процедуру в PL/SQL, проверил результат и не надо запускать саму программу и делать dump запроса, чтобы посмотреть что там получилось. Я так думаю © |
|||
|
||||
| DimW |
|
||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
утверждение не верно. полный разбор: - синтаксический разбор; - морфологический разбор; - определение наиболее оптимального плана выполнения запроса; (самая дорогая операция при разборе запроса) частичный разбор: - синтаксический разбор; - морфологический разбор; если морфология идентична при повторном выполнении запроса, то подбор плана сервер не делает т.к. он уже для него есть. если ты действительно значения в запрос добавляешь динамически(не используя переменные привязки), то оракл всегда будет выполнять полный разбор. спорить не буду дело вкуса просто новечку в оракл лучше знать о простом способе. Добавлено @ 16:32 к стати при таком варианте:
в действительности запрос керируемый ораклом будет выглядеть примерно так:
делается это для того что бы избежать ситуаци когда используя этот же запрос, программист использует другие переменные (к примеру start_date, end_date), тем самым избежать полного разбора. Это сообщение отредактировал(а) DimW - 7.4.2010, 16:33 |
||||||
|
|||||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
||||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
я тоже начал работу с 8-ки..тогда прочел о предпочтительности процедур обычным запросам в какой-то книге..давно это было, может книга старая была а может просто книга по базам данных а это было написано в виде общей рекомендации..не помню уже, 8 лет назад было. |
|||
|
||||
| DimW |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1330 Регистрация: 24.2.2005 Где: Орёл Репутация: 23 Всего: 44 |
||||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 3 Всего: 211 |
Да, это я тогда только на работу поступил и сразу Oracle -ом по башке
Так что это было мое первое знакомство с базами данных, 2 года там проработал и после этого как-то сменил профиль, серьезно базами уже не занимаюсь, вот никак не нахожу повода прочитать чего нибудь современного и серьезного. |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
не правда ли мутный пример? Он ничего не показывает. Откуда Вы вызваете эот скрипт? С клиента? Почему бы здесь сразу не использовать связанные пременные(параметры)? Или же это sql скрипт, который выполняется неким шеллом? Для оракла штатным шеллом является sqlplus, а он поддерживает и макросы и и переменные:
Мне думается что следует понимать, что для Оракла не работает абсолютное большинство бест практис MS SQL, ровно как и наоборот. Может расскажете что конкретно Вы пытаетесь сделать, вместо того, чтобы рассказывать как вы всегда это делали в MS SQL и показывать бессмысленные примеры, а мы постараемся Вам рассказать как это делается в Оракле? -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Про то что п1- чушь уже написали. еще пару пунктов добавлю, с моей точки зрения куда более значимых: - хранение запроса на стороне сервера имеет те же преимущества что и ранне связывание против позднего. В случае изменения схемы данных мы получим ошибку компиляции а не времени выполнения. - хранение текста запроса на стороне сервера позволяет менять его текст, не перекомпилируя приложение. А поменять текст может понадобится... ну например хинт подставить.... -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| MasterOfCode |
|
|||
|
elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: нет Всего: 27 |
я пытался сделать так, как я привык. просто набор запросов. нажав на "execute", в PL/SQL Developer чтоб начались выполнятся поочередно скрипты и в результате получить таблицу. вот и все, собственно. Поскольку у меня в нескольких запросах, используются одинаковые периоды времени, необходимо один раз подправить вначале и везде автоматом сменится. пример:
Писал от руки, возможно где то ошибся. -------------------- ![]() |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 37 Всего: 161 |
Command window PL/SQL девелопера эмулирует некоторые команды sqlplus'а
-------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
![]()
|
| Правила форума "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. |