2009-04-08 12 views
36

Durante la modifica, la compilazione o il cherry picking dalle istruzioni SQL posso trovarmi a interagire con uno dei quattro strumenti di database più diffusi. Ho fatto ricorso a commenti a riga singola per DB2 e Informix. Ho creato macro in vim per renderlo leggermente più efficiente ma mi stavo chiedendo se sto lavorando troppo duramente.Esistono delimitatori di commento multilinea in SQL che sono indipendenti dal fornitore?

+0

Il grosso problema con i delimitatori di commento multilinea non è la portabilità; è l'impossibilità di nidificare. – Wildcard

risposta

41

I commenti di stile C sono standard in SQL 2003 e SQL 2008 (ma non in SQL 1999 o versioni precedenti). I seguenti DBMS tutti i commenti stile supporto C:

  • Informix
  • PostgreSQL
  • MySQL
  • Oracle
  • DB2
  • Sybase
  • Ingres
  • Microsoft SQL Server
  • SQLite (3.7.2 e versioni successive)
  • Teradata Aster e

Questo non è possibile ogni DBMS, ma è più o meno tutti i principali DBMS SQL. (Io volentieri aggiungere note di qualsiasi altro DBMS che fa - o non lo fa - commenti in stile C di supporto.)

I documenti standard SQL 2003 commentano notazioni così:

<comment> ::= <simple comment> | <bracketed comment> 

<simple comment> ::= 
    <simple comment introducer> [ <comment character> ... ] <newline> 

<simple comment introducer> ::= 
    <minus sign> <minus sign> [ <minus sign> ... ] 

<bracketed comment> ::= 
    <bracketed comment introducer> <bracketed comment contents> 
    <bracketed comment terminator> 

<bracketed comment introducer> ::= <slash> <asterisk> 

<bracketed comment terminator> ::= <asterisk> <slash> 

<bracketed comment contents> ::= [ { <comment character> | <separator> }... ] 

<comment character> ::= <nonquote character> | <quote> 

IBM Informix Dynamic Server (IDS o Informix) supporta i commenti in stile C. Supporta anche '{ ... }' come commenti multi-linea potenzialmente, tranne in contesti in cui significa qualcos'altro - che qualcos'altro è un LIST o SET o MULTISET letterale. (Potresti scoprire che DB-Access viene confuso dai commenti in stile C, che è un problema separato.)

+0

Abbastanza corretto, non era chiaro quale standard SQL fosse in discussione (e le mie informazioni erano obsolete). Nondimeno, continuo a sostenere che i commenti in stile C non sono completamente indipendenti dal venditore. –

+0

Penso che il meglio che posso sperare sia l'SQL 1999 :(Beh, almeno vim ovunque .. – ojblass

+0

Dipende dalle versioni che stai usando, ma penso che troverai che i prodotti sono molto più avanti dello standard. Ho trovato commenti dal 2003 per MySQL con problemi (minori) con/* commenti * /, ma livello di utilità, non livello server. Penso che troverete che la maggior parte dei server l'hanno supportata dal 2000. –

8

Lo standard ISO definisce solo commenti a riga singola che iniziano con due trattini. Alcuni produttori supportano il commento in stile C (ad es. Multilinea che inizia con/* e termina con * /), ma non dovrebbe essere considerato "venditore agnostico".

Problemi correlati