Определение строковых констант в PL/SQL

строковые константы PL/SQLРабота со строками в основном сводится к вызову многочисленных встроенных строковых функций Oracle PL/SQL, поэтому я рекомендую хотя бы в общих чертах познакомиться с функциями, предлагаемыми Oracle. В моем блоге вы узнаете, как записывать строковые константы, а также познакомитесь с важнейшими строковыми функциями.

Один из способов загрузки строковых данных в программу PL/SQL заключается в выполнении инструкции SELECT, возвращающей значения строкового типа. Также возможно определение строковых констант непосредственно в коде. Строковые константы заключаются в одинарные кавычки: 

'Brighten the corner where you are.'

Если одинарную кавычку потребуется включить в строковую константу, ее можно продублировать:

'Aren''t you glad you''re learning PL/SQL with O''Reilly?' 

Другое, более элегантное решение основано на определении пользовательских ограничителей строк. Для этой цели используется префикс q (также допускается использование символа Q верхнего регистра). Пример: 

q'!Aren't you glad you're learning PL/SQL with O'Reilly?!'

или:

q'{Aren't you glad you're learning PL/SQL with O'Reilly?}' 

При использовании префикса q вся строка должна быть заключена в одиночные кавычки. Символ, следующий за первой кавычкой (восклицательный знак в первом из двух примеров), становится ограничителем строки. Таким образом, первая строка с префиксом q состоит из всех символов между двумя восклицательными знаками.

Если начальным ограничителем является символ [, {, < или (, то конечным ограничителем должен быть символ ], }, > или ) соответственно.

Как правило, в представлении строковых констант используется набор символов базы данных. Если константа присваивается переменной NCHAR или NVARCHAR2, она неявно преобразуется в символы национального набора. Oracle выполняет такие преобразования по мере необходимости, и программисту об этом заботиться не нужно. Если же потребуется явно указать, что строковая константа задается в национальном наборе символов, поставьте перед ней префикс n

n'Pils vom fa?: 1€'

Чтобы при определении строки в национальном наборе некоторые символы задавались числовыми кодами Юникода, используйте префикс u:

u'Pils vom fa\00DF: 1\20AC' 

Здесь 00DF — код немецкой буквы «?», а 20AC — код знака евро. Полученная константа не отличается от предшествующего примера с префиксом n.

Значение строковой константы можно сохранить в переменной оператором присваивания: 

DECLARE
jonathans_motto VARCHAR2(50);
BEGIN
jonathans_motto := 'Brighten the corner where you are.';
END;

Константы также можно передавать встроенным функциям. Например, следующий вызов функции LENGTH определяет количество символов в переданной строке:

BEGIN
DBMS_OUTPUT.PUT_LINE(
LENGTH('Brighten the corner where you are.')
);
END; 

При выполнении этого кода мы узнаем, что строка состоит из 34 символов.

При выполнении кода PL/SQL в SQL*Plus или SQL Developer часто возникают проблемы с символом &. Дело в том, что в этих программах указанный символ используется в качестве префикса при замене, и, встретив его, SQL*Plus запрашивает значение переменной. Например:

SQL> BEGIN
2 DBMS_OUTPUT.PUT_LINE ('Generating & saving test data.');
3 END;
4 /
Enter value for saving:

У проблемы существует несколько решений. Одно из них, хорошо подходящее для SQL*Plus и SQL Developer, заключается в выполнении команды SET DEFINE OFF, отключающей подстановку переменных. Другие решения приводятся в книге Джонатана Генника «Oracle SQL*Plus: The Definitive Guide» (издательство O’Reilly).

 

Вас заинтересует / Intresting for you:

Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4633 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14736 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Основы языка PL/SQL: использов...
Основы языка PL/SQL: использов... 4693 просмотров Ирина Светлова Tue, 06 Feb 2018, 14:04:03
Работа с числами в PL/SQL на п...
Работа с числами в PL/SQL на п... 44819 просмотров Antoniy Mon, 28 May 2018, 16:45:11
Войдите чтобы комментировать