Alternatives pour les apostrophes dans les littéraux de chaînes de caractères

Au lieu d'une double apostrophe (échappée), vous pouvez utiliser un autre caractère ou une paire de caractères.

Le mot-clé q ou Q précédant une chaîne de caractères entre guillemets indique à l'analyseur syntaxique que certaines paires gauche et droite de mêmes caractères sont des délimiteurs pour le littéral de chaîne intégré.

Syntaxe:
<alternate string literal> ::=
  { q | Q } <quote> <alternate start char>
  [ { <char> }... ]
  <alternate end char> <quote>
Note
Règles d'utilisation

Lorsque <caractère alternatif de début> est l'un des caractères '(', '{', '[' ou '<', alors <caractère alternatif de fin> doit être utilisé en conjonction avec un `partenaire' approprié, tel que ')', '}', ']' ou '>'. Dans les autres cas, <caractère de fin alternatif> est le même que <caractère de début alternatif>.

À l'intérieur d'une chaîne de caractères, c'est-à-dire des éléments <char>, il est possible d'utiliser des guillemets simples (non masqués). Chaque guillemet fera partie de la chaîne de caractères résultante.

Example 1. Utilisation d'apostrophes alternatives dans les chaînes de caractères
-- 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;
Example 2. Assemblage dynamique de requêtes à l'aide de chaînes de caractères.
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