Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
- надо было развернуть запрос из 58 строк в 58 полей
- из FAQ по case/decode развернул
- запрос длинный. :) Как бы его в хранимку, но делать
sSQL := 'ffbvffvv' ||
'dfvdvdv' ||
лень.
Есть какой способ или всё таки добавлять спец-символы переноса строки в коде-генераторе его?
8-)
26 фев 08, 17:11    [5339872]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Как сделать то не знаю что...

цикл по 58 пунктам + dbms_output.put_line

ЗЫ: А Вы уверены, что Вам нужно такое транспонирование - раз уж у Вас все равно PLSQL?
26 фев 08, 17:20    [5339940]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
SQL> set serveroutput on;
SQL> 
SQL> declare
  2    i VARCHAR2(100) := 'one
  3  two';
  4  begin
  5    dbms_output.put_line(i);
  6  end;
  7  /
 
one
two
 
PL/SQL procedure successfully completed
 
SQL> 
26 фев 08, 17:21    [5339942]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Или chr(10) надо? Не совсем понял из вопроса, что требуется...
26 фев 08, 17:22    [5339954]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
RA\/EN
Или chr(10) надо? Не совсем понял из вопроса, что требуется...


По моему, человек отладил запрос, а теперь его надо запихнуть в процедуру, а ему лень расставлять знаки конкатенации.
Если конечно речь идет о динамичеком SQL :)
26 фев 08, 17:25    [5339975]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
блин, туплю. Вот запрос. Конкатенация не нужна вроде, т.к. PSQL проглатывает без неё, но вот на кавычки ругается = надо удваивать
 sTmp := 
  'select ыыыы, 
        max(a30) a30,max(a31) a31,max(a32) a32,max(a33) a33,max(a34) a34,max(a35) a35,max(a36) a36,max(a57) a57,max(a1) a1,max(a4) a4,max(a5) a5,max(a6) a6,max(a9) a9,max(a14) a14,max(a40) a40,max(a41) a41,max(a42) a42,max(a43) a43,max(a44) a44,max(a45) a45,max(a46) a46,max(a47) a47,max(a59) a59,max(a64) a64,max(a65) a65,max(a10) a10,max(a11) a11,max(a12) a12,max(a13) a13,max(a16) a16,max(a17) a17,max(a27) a27,max(a28) a28,max(a48) a48,max(a49) a49,max(a50) a50,max(a51) a51,max(a52) a52,max(a53) a53,max(a54) a54,max(a56) a56,max(a58) a58,max(a60) a60,
        from (select codgar,
        
        CASE  WHEN (t.codstag = 30) and (Not t.startdate is null)and (Not t.enddate is null) THEN
        '2' WHEN (t.codstag = 30) and (Not t.enddate is null) THEN'1' WHEN (t.codstag = 30) and (No
26 фев 08, 17:27    [5339996]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
tru55
RA\/EN
Или chr(10) надо? Не совсем понял из вопроса, что требуется...


По моему, человек отладил запрос, а теперь его надо запихнуть в процедуру, а ему лень расставлять знаки конкатенации.
Если конечно речь идет о динамичеком SQL :)

Ну это как бы не проблема ни разу - великий Dynamic и его приспешники sed, awk и perl всенепременнейше спасут отца русской демократии...
А то и просто текстовый редактор, понимающий regexp :)
26 фев 08, 17:28    [5340006]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Petro123
но вот на кавычки ругается = надо удваивать
И чего, у Вас проблемы с replace? :)
26 фев 08, 17:29    [5340013]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Jannny
Как сделать то не знаю что...

цикл по 58 пунктам + dbms_output.put_line

ЗЫ: А Вы уверены, что Вам нужно такое транспонирование - раз уж у Вас все равно PLSQL?

а как? Запустить сам генератор?
26 фев 08, 17:29    [5340016]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Jannny
Petro123
но вот на кавычки ругается = надо удваивать
И чего, у Вас проблемы с replace? :)
нет конечно :).
Думал здесь как в "одном" ЯП перенос строки нужен :)
26 фев 08, 17:30    [5340027]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Jannny
Member

Откуда: Спб
Сообщений: 6424
Petro123
Jannny
Как сделать то не знаю что...

цикл по 58 пунктам + dbms_output.put_line

ЗЫ: А Вы уверены, что Вам нужно такое транспонирование - раз уж у Вас все равно PLSQL?

а как? Запустить сам генератор?
Я не знаю, что такое генератор :)
26 фев 08, 17:34    [5340057]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 18351
Jannny
Я не знаю, что такое генератор :)
Генератор - это то, что крепится на болтах. Нередко - на болтах забитых или покладенных.
26 фев 08, 17:36    [5340075]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Jannny
Petro123
Jannny
Как сделать то не знаю что...

цикл по 58 пунктам + dbms_output.put_line

ЗЫ: А Вы уверены, что Вам нужно такое транспонирование - раз уж у Вас все равно PLSQL?

а как? Запустить сам генератор?
Я не знаю, что такое генератор :)

тогда я непонял твой вопрос.
Делал по принципу SQLPlus - выброс в цикле в файл на диске (формирование скрипта) и запуск его после цикла.

Ладно. Вопрос закрыт вроде. Функция создалась.
Спасибо.
26 фев 08, 17:39    [5340104]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Alexey Yatsenko
Member

Откуда:
Сообщений: 154
Petro123
блин, туплю. Вот запрос. Конкатенация не нужна вроде, т.к. PSQL проглатывает без неё, но вот на кавычки ругается = надо удваивать
 sTmp := 
  'select ыыыы, 
        max(a30) a30,max(a31) a31,max(a32) a32,max(a33) a33,max(a34) a34,max(a35) a35,max(a36) a36,max(a57) a57,max(a1) a1,max(a4) a4,max(a5) a5,max(a6) a6,max(a9) a9,max(a14) a14,max(a40) a40,max(a41) a41,max(a42) a42,max(a43) a43,max(a44) a44,max(a45) a45,max(a46) a46,max(a47) a47,max(a59) a59,max(a64) a64,max(a65) a65,max(a10) a10,max(a11) a11,max(a12) a12,max(a13) a13,max(a16) a16,max(a17) a17,max(a27) a27,max(a28) a28,max(a48) a48,max(a49) a49,max(a50) a50,max(a51) a51,max(a52) a52,max(a53) a53,max(a54) a54,max(a56) a56,max(a58) a58,max(a60) a60,
        from (select codgar,
        
        CASE  WHEN (t.codstag = 30) and (Not t.startdate is null)and (Not t.enddate is null) THEN
        '2' WHEN (t.codstag = 30) and (Not t.enddate is null) THEN'1' WHEN (t.codstag = 30) and (No


В PL/SQL Developer есть для таких случаев функция в редакторе: Edit -> Special Copy -> PLSQL.
Помещает в клипборд выделенный кусок текста в виде, пригодном к непосредственной вставке в код (с удвоением кавычек, добавлением ||chr(10) и т.п.)
26 фев 08, 17:48    [5340206]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
andrey_anonymous
tru55
RA\/EN
Или chr(10) надо? Не совсем понял из вопроса, что требуется...


По моему, человек отладил запрос, а теперь его надо запихнуть в процедуру, а ему лень расставлять знаки конкатенации.
Если конечно речь идет о динамичеком SQL :)

Ну это как бы не проблема ни разу - великий Dynamic и его приспешники sed, awk и perl всенепременнейше спасут отца русской демократии...
А то и просто текстовый редактор, понимающий regexp :)

Нц что ты сразу из пушки по воробъям
Может, человеку будет достаточно:
SQL> set serveroutput on;
SQL> 
SQL> declare
  2    i VARCHAR2(2000) := q'[ one
  3    ' ' ' '
  4    two]';
  5  begin
  6    dbms_output.put_line(i);
  7  end;
  8  /
 
 one
  ' ' ' '
  two
 
PL/SQL procedure successfully completed
 
SQL> 
26 фев 08, 17:50    [5340233]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Евгений_25
Member

Откуда: Харьков
Сообщений: 460
Alexey Yatsenko

В PL/SQL Developer есть для таких случаев функция в редакторе: Edit -> Special Copy -> PLSQL.
Помещает в клипборд выделенный кусок текста в виде, пригодном к непосредственной вставке в код (с удвоением кавычек, добавлением ||chr(10) и т.п.)


это так некрасиво
26 фев 08, 17:56    [5340280]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38640
Евгений_25
Alexey Yatsenko

В PL/SQL Developer есть для таких случаев функция в редакторе: Edit -> Special Copy -> PLSQL.
Помещает в клипборд выделенный кусок текста в виде, пригодном к непосредственной вставке в код (с удвоением кавычек, добавлением ||chr(10) и т.п.)


это так некрасиво

IMHO зато изящно и технологично (кинул в копилку).
Спасибо.
26 фев 08, 18:03    [5340327]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
Petro123
Евгений_25
Alexey Yatsenko

В PL/SQL Developer есть для таких случаев функция в редакторе: Edit -> Special Copy -> PLSQL.
Помещает в клипборд выделенный кусок текста в виде, пригодном к непосредственной вставке в код (с удвоением кавычек, добавлением ||chr(10) и т.п.)


это так некрасиво

IMHO зато изящно и технологично (кинул в копилку).
Спасибо.

Ну-ну. Когда захочешь восстановить запрос из кода, будешь жалеть
Я бы руки отрывал за запрос на 100 строк, забитый через конкатенацию.
26 фев 08, 18:32    [5340473]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
ГостЪ
Guest
RA\/EN

Ну-ну. Когда захочешь восстановить запрос из кода, будешь жалеть
Я бы руки отрывал за запрос на 100 строк, забитый через конкатенацию.


А в принципе, можно его залогировать.
26 фев 08, 19:46    [5340762]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
RA\/EN
Member

Откуда:
Сообщений: 3658
ГостЪ
RA\/EN

Ну-ну. Когда захочешь восстановить запрос из кода, будешь жалеть
Я бы руки отрывал за запрос на 100 строк, забитый через конкатенацию.


А в принципе, можно его залогировать.

Ага, а если пакет залочен джобом, допустим, али продакшен? Начинаем это гуано выковыривать из v$sqlarea вместо того, чтобы просто скопипастить. Раздражает дико, да и чтобы просто разобраться, не выполняя, надо лишние телодвижения производить... А так, скопировал, кавычки грохнул (если q'[]' не пользуется) - и готов SQL с подсветкой синтаксиса и прочими радостями.
26 фев 08, 20:02    [5340791]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
ГостЪ
Guest
RA\/EN
ГостЪ

А в принципе, можно его залогировать.

Ага, а если пакет залочен джобом, допустим, али продакшен? Начинаем это гуано выковыривать из v$sqlarea вместо того, чтобы просто скопипастить. Раздражает дико, да и чтобы просто разобраться, не выполняя, надо лишние телодвижения производить... А так, скопировал, кавычки грохнул (если q'[]' не пользуется) - и готов SQL с подсветкой синтаксиса и прочими радостями.


Ага, если он "настоящий динамический", то его вроде как и не скопипейстить с пакета:)
а лишние телодвижения, ну ещё один-два риплэйса, да..

Я вообще тоже сторонник не сувать переносы строк - типа код должен быть красивым, так что я сам не понимаю, зачем я в спор ввязался=)
26 фев 08, 20:18    [5340810]     Ответить | Цитировать Сообщить модератору
 Re: какие методы есть воткнуть запрос ~500 строк в хранимку?  [new]
Евгений_25
Member

Откуда: Харьков
Сообщений: 460
RA\/EN

Ну-ну. Когда захочешь восстановить запрос из кода, будешь жалеть
Я бы руки отрывал за запрос на 100 строк, забитый через конкатенацию.

+1
вот именно этим и не красив, сколько раз приходилось такие запросы вырывать и потом кучу геморою в приведение его в нормальный читабельный вид если запрос большой
27 фев 08, 09:58    [5341847]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить