Pregunta

Solo para aclarar, estoy ejecutando Sybase 12.5.3, pero creo que esto también es válido para SQL Server 2005. Básicamente, estoy intentando escribir una consulta que se parece un poco a esto, lo simplifiqué lo más posible para resaltar el problema:

DECLARE @a int,  @b int, @c int

SELECT
     @a = huzzah.a
    ,@b = huzzah.b
    ,@c = huzzah.c
FROM (
    SELECT
         1 a
        ,2 b
        ,3 c
) huzzah

Esta consulta me da el siguiente error: " Error: 141 Una declaración SELECT que asigna un valor a una variable no debe combinarse con operaciones de recuperación de datos. "

La única solución alternativa que tengo para esto hasta ahora, es insertar los datos de la tabla derivada en una tabla temporal y luego volver a seleccionarla. Lo que funciona bien, pero el hecho de que esto no funcione me molesta. ¿Hay una mejor manera de hacer esto?

¿Fue útil?

Solución

El error aparece como se describe en 12.5.3 esd 4 & amp; 7, funciona bien en 12.5.4 esd 4 y amp; 6.

Parece un error que ha sido parchado, tus únicas opciones parecen ser una solución o un parche.

He encontrado lo que parece ser el error 377625

Otros consejos

Acabo de ejecutar su código contra 12.5.3 y analiza bien ... no devuelve nada, pero sí funciona. Quizás hayas simplificado demasiado el problema porque no veo ningún mensaje de error.

Para ser claros, lo siguiente se ejecuta y devuelve lo que se espera.

DECLARE @a int,  @b int, @c int

SELECT
     @a = huzzah.a
    ,@b = huzzah.b
    ,@c = huzzah.c
FROM (
    SELECT
         1 a
        ,2 b
        ,3 c
) huzzah

select @a
select @b
select @c
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top