Domanda

Giusto per chiarire, sto eseguendo Sybase 12.5.3, ma sono indotto a credere che ciò valga anche per SQL Server 2005. Fondamentalmente, sto cercando di scrivere una query che assomigli un po 'a questa, l'ho semplificata il più possibile per evidenziare il 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

Questa query mi dà il seguente errore: " Errore: 141 Un'istruzione SELECT che assegna un valore a una variabile non deve essere combinata con le operazioni di recupero dei dati. "

L'unica soluzione che ho ottenuto finora è inserire i dati della tabella derivata in una tabella temporanea e quindi selezionarli nuovamente. Il che funziona bene, ma il fatto che non funzioni mi infastidisce. C'è un modo migliore per farlo?

È stato utile?

Soluzione

L'errore appare come descritto in 12.5.3 esd 4 & amp; 7, funziona benissimo in 12.5.4 esd 4 & amp; 6.

Sembra un bug che è stato corretto, le tue uniche opzioni sembrano essere una soluzione alternativa o una patch.

Ho trovato quello che sembra essere il bug 377625

Altri suggerimenti

Ho appena eseguito il tuo codice con 12.5.3 e analizza bene ... non restituisce nulla ma funziona. Hai forse semplificato un po 'troppo il problema perché non vedo alcun messaggio di errore.

Giusto per essere chiari, quanto segue viene eseguito e restituisce ciò che ti aspetteresti.

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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top