2009-04-08 21 views
36

Durante la edición, creación o selección de cereza de las declaraciones de SQL, puedo encontrarme interactuando con una de las cuatro herramientas de bases de datos populares. He estado recurriendo a comentarios de una sola línea para DB2 e Informix. He creado macros en vim para hacerlo un poco más eficiente, pero me preguntaba si estoy trabajando demasiado.¿Hay delimitadores de comentarios de líneas múltiples en SQL que son independientes del proveedor?

+0

El gran problema con los delimitadores de comentarios de líneas múltiples no es la portabilidad; es la imposibilidad de anidar. – Wildcard

Respuesta

41

Los comentarios del estilo C son estándar en SQL 2003 y SQL 2008 (pero no en SQL 1999 o antes). Los siguientes DBMS todos los comentarios de estilo de apoyo C:

  • Informix
  • PostgreSQL
  • MySQL
  • Oracle
  • DB2
  • Sybase
  • Ingres
  • Microsoft SQL Server
  • SQLite (3.7.2 y posteriores)
  • Teradata Aster y

Eso no es posible cada DBMS, pero es más o menos cada principales DBMS SQL. (Voy a añadir notas de buen grado cualquier otro DBMS que hace - o no lo hace - los comentarios de apoyo de estilo C.)

Los SQL 2003 documentos estándar comentan notaciones así:

<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) es compatible con los comentarios de estilo C. También admite '{ ... }' como comentarios potencialmente multilínea, excepto en contextos en los que significa algo más, esa otra cosa es un LISTA o SET o un literal MULTISET. (Puede encontrar que DB-Access se confunde con los comentarios del estilo C, que es un problema aparte).

+0

Justo lo suficiente, no estaba claro qué estándar SQL se estaba discutiendo (y mi información no estaba actualizada). No obstante, sigo afirmando que los comentarios al estilo C no son completamente independientes del vendedor. –

+0

Creo que lo mejor que puedo esperar es SQL 1999 :(Bueno, al menos tengo vim en todas partes. – ojblass

+0

Depende de las versiones que esté utilizando, pero creo que encontrará que los productos están muy por delante del estándar. encontré comentarios de 2003 para MySQL con problemas (menores) con/* comments * /, pero nivel de utilidad, no de servidor. Creo que encontrará que la mayoría de los servidores lo han soportado desde 2000. –

8

La norma ISO solo define comentarios de una sola línea que comienzan con dos guiones. Algunos proveedores admiten comentarios al estilo C (es decir, multilínea que comienza con/* y termina con * /), pero no debe considerarse "independiente del proveedor".

Cuestiones relacionadas