none
error de sintaxis en clausula OUTPUT RRS feed

  • Pregunta

  • Muy buenas, estoy intentando hacer una consulta en un SQL Server 2000 en un servidor Windows server 2003

    La consulta tiene esta inserción de la tabla tabla_documento a la tabla Documentofinal:

    declare @tabla1 table (docu int, idorigen int)

    /*Metemos los datos del documento en la tabla Documentofinal, y el numero iid va a la columna temporal. Luego en la tabla temporal @tabla1 metemos el iden del documento nuevo, y la iid correspondiente*/
      insert  Documentofinal (idObra, idTipo, idOriginador, numero, hoja, edicion, fechaEdicion, idEstado, idCalificacion, idArea, codigoOrigen, observaciones, fichero,col_temp)
      output  inserted.iden,inserted.col_temp into @tabla1
      select obra , Tipo, Originador, numero, Hoja, Edicion, Fecha, Estado, Calif, Area, Codigo_origen, Observaciones, Fichero,iid
      from tabla_documento d;

    La tabla documento final tiene un autonumérico "iden" y una columna "col_temp" que es el que pretendo extraer de inserted a @tabla1 para luego meterlo en otra tabla diferente.

    El caso es que me da el siguiente error:

    "Servidor: mensaje 170, nivel 15, estado 1, línea 6
    Línea 6: sintaxis incorrecta cerca de 'output'."

    Y sin embargo, en mi ordenador portátil con SQL Server 2008 no me lo da. ¿Que error tiene mi clausula output?

    Gracias por adelantado

    jueves, 12 de julio de 2012 20:06

Respuestas

  • Lo que sucede es que la instruccion OUTPUT ha estado disponible a partir de la version SQL Server 2005, por ende cuando la compilas en la version de SQL Server 2000 es una sentencia no reconocida.


    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    • Propuesto como respuesta alfred_magno jueves, 12 de julio de 2012 20:29
    • Marcado como respuesta eduf32 viernes, 13 de julio de 2012 18:09
    jueves, 12 de julio de 2012 20:16

Todas las respuestas

  • Lo que sucede es que la instruccion OUTPUT ha estado disponible a partir de la version SQL Server 2005, por ende cuando la compilas en la version de SQL Server 2000 es una sentencia no reconocida.


    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    • Propuesto como respuesta alfred_magno jueves, 12 de julio de 2012 20:29
    • Marcado como respuesta eduf32 viernes, 13 de julio de 2012 18:09
    jueves, 12 de julio de 2012 20:16
  • es correcto, como dice geovanny, claro que corre en tu version 2008, esta opcion fue implementada a partir de la version 2005,  siginifica que no tiene soporte para 2000,

    Saludos

    http://dbasqlserver.wordpress.com/

    jueves, 12 de julio de 2012 20:33
  • Pues vaya disgusto me dáis. ¿Y no hay una forma de emularlo en SQL 2000?
    jueves, 12 de julio de 2012 21:51
  • Pues de una forma tan fácil y simple como SQL Server 2008 no, lo que tocaria es que en una instruccion aparte guardes los valores y los mandes a insertar a la tabla destino, pero al final no tienes en SQL 2000 el beneficio que la instrucción compacta OUTPUT te da.

    "How many years can some people exist before they're allowed to be free" Bob Dylan Email: info@geohernandez.com Blog: geeks.ms/blogs/ghernandez

    jueves, 12 de julio de 2012 22:15
  • pues vaya que se puede pero no es algo trivial, tendrias que idear el mecanismo, si te refieres a si hay una traduccion de la misma clausula para sql 2000 no la hay, 

    Saludos

    jueves, 12 de julio de 2012 22:49
  • Bueno, ya he apañado una solución

    Muchas gracias por la ayuda

    viernes, 13 de julio de 2012 18:10