QUOTATION MARKS e QUOTE OPERATOR

Le virgolette alte doppie o doppi apici (QUOTATION MARKS) vengono usate per rinominare una colonna di una tabella.

E s e m p i o
SELECT 12 +10 "TOT"   from dual;
TOT
----
22

Il singolo apice (SINGLE QUOTATION MARKS) al contrario serve nella definizione dei Character Literal, che non è altro che una sequenza di caratteri racchiusi da apici singoli.

E s e m p i o
SELECT 'Matt Murdock' "NOME" from dual;
NOME
------------
Matt Murdock

Se la stringa Character Literal contiene un singolo apice compare il messaggio di errore seguente:
SELECT  'Matt Murdock's power'  FROM dual;
ORA-00923: parola chiave FROM non trovata dove prevista
00923. 00000 -  "FROM keyword not found where expected"
Questo perché Oracle interpreta il carattere s come il nome della colonna "s" e si aspetta dopo il carattere s la clausola FROM.

Per risolvere il problema basta aggiungere un singolo apice prima del carattere s ma l'utilizzo di molti apici singoli potrebbero creare confusione
SELECT 'Matt Murdock''s power'  FROM dual;

Oracle permette di utilizzare il QUOTE OPERATOR (q) come il simbolo che chiude la coppia di apici. Questo operatore permette di scegliere una coppia di simboli ( q'delimiter') come alternativa all'apice singolo:
( ), [ ], < > oppure { } oppure un qualsiasi carattere.

E s e m p i
SELECT  q'< Matt Murdock's power >'   "q<>"
FROM dual;
q<>
----------------------
Matt Murdock's power

SELECT  q'[ Matt Murdock's power ]'   "q[]"
FROM dual;
Risultato:
q[]
----------------------
Matt Murdock's power

SELECT  q'X Matt Murdock's power X'   "qXX"
FROM dual;
Risultato:
qXX
----------------------
Matt Murdock's power

Post popolari in questo blog

ORA-12154: TNS: il listener non è attualmente a conoscenza del servizio richiesto nel descrittore di connessione

Create e Drop Pluggable Database