среда, 24 декабря 2014 г.

Как вставить одиночную кавычку в строку символов

Как вставить одиночную кавычку в строку символов

Если вам нужно вставить разделитель в строку, возникают муки с ужасными последствиями. До реализации Oracle Database 10g, вы должны были писать два символа кавычек подряд, для того чтобы в строку попал один. Вот примеры:

Literal (default delimiter)                                Actual value
------------------------------                            -------------------------------
'There''s no business like show business.'            There's no business like show business.
'"Hound of the Baskervilles"'                              "Hound of the Baskervilles"
''''                                                                      '
'''hello'''                                                              'hello'
''''''                                                                     ''
Из примеров видно что для того, что бы записать две кавычки рядом, надо написать шесть кавычек. Что бы упростить жизнь программисту, Oracle Database 10g ввела возможность пользователю ввести свои собственные разделители. Начните строку с символа "q", что бы указать свой разделитель, и окружите свое выражение в своих разделителях одинарными кавычками.

Вот примеры:

Literal (delimiters highlighted)                                        Actual value
--------------------------------------------                       -----------------------------------------
q' ( There's no business like show business.)                      ' There's no business like show business.
q' { "Hound of the Baskervilles" } '                                    "Hound of the Baskervilles"
q' [ ' ]'                                                                               '
q' !'hello' ! '                                                                       'hello'
q' |'' | '                                                                               ''

Вы можете использовать простые разделители такие как   ! или  |, или парные символа, такие как скобки, квадратные или фигурные скобки.

Одно финальное замечание: как вы и ожидаете, внутри строки символ двойной кавычки не имеет какого-то особого значения. Это символ такой же как и любой символ или цифра.

воскресенье, 7 декабря 2014 г.

Перемещение таблиц в новое табличное пространство


Итак, у нас сложилась не хорошая ситуация. В одном табличном пространстве "свалены" таблицы и их индексы от разных схем. Принимаем решение - для схемы SCHEMA10 создаем отдельное табличное пространство с именем TABLESPACE10. Для реальной схемы таблиц и индексов много. Тогда пропускаем в вашем любимом навигаторе, например SQLDeveloper вот этот оператор. И получаем для каждой таблицы и индекса строку с командами alter table move или alter index rebuild. Через copy/paste переносим их и выполняем. Готово.
Иногда полезно указать конкретное табличное пространство, из которого переносим таблицы.

select txt from (
select decode( segment_type, 'TABLE', segment_name, table_name ) order_col1,
       decode( segment_type, 'TABLE', 1, 2 ) order_col2,
      'alter '||lower(segment_type)||' '||lower(owner)||'.'||lower(segment_name)||
       decode(segment_type,'TABLE',' move ',' rebuild ')||
      ' tablespace TABLESPACE10;' txt
  from dba_segments d,
       (select table_name, index_name from dba_indexes) i
 where d.segment_type in ('TABLE', 'INDEX')
   and d.owner = 'SCHEMA10'
   and d.tablespace_name = 'TABLESPACE_OLD'
   and d.segment_name = i.index_name (+)
 order by 1, 2 )

X-Plane 11, 12 - любитель, Фото любитель со стажем

Постоянные читатели

Архив блога