Альтернативы для апострофов в строковых литералах
Вместо двойного (экранированного) апострофа вы можете использовать другой символ или пару символов.
Ключевое слово q
или Q
предшествующее строке в кавычках сообщает парсеру, что некоторые левые и правые пары одинаковых символов являются разделителями для встроенного строкового литерала.
<alternate string literal> ::= { q | Q } <quote> <alternate start char> [ { <char> }... ] <alternate end char> <quote>
Note
|
Правила использования
Когда <alternate start char> является одним из символов '(', '{', '[' или '<', то <alternate end char> должен бытьиспользован в паре с соответствующим “партнёром”, а именно ')', '}', ']' или '>'. В других случаях <alternate end char> совпадает с <alternate start char>. Внутри строки, т.е. <char> элементах, одиночные (не экранированные) кавычки могут быть использованы.Каждая кавычка будет частью результирующей строки. |
-- result: abc{def}ghi
SELECT Q'{abc{def}ghi}' FROM rdb$database;
-- result: That's a string
SELECT Q'!That's a string!' FROM rdb$database;
EXECUTE BLOCK
RETURNS (
RDB$TRIGGER_NAME CHAR(64)
)
AS
DECLARE VARIABLE S VARCHAR(8191);
BEGIN
S = 'SELECT RDB$TRIGGER_NAME FROM RDB$TRIGGERS WHERE RDB$RELATION_NAME IN ';
S = S || Q'! ('SALES_ORDER', 'SALES_ORDER_LINE')!';
FOR
EXECUTE STATEMENT :S
INTO :RDB$TRIGGER_NAME
DO
SUSPEND;
END