Question

Juste pour clarifier les choses, j’utilise Sybase 12.5.3, mais j’estime que cela vaut également pour SQL Server 2005. En gros, j'essaie d'écrire une requête qui ressemble un peu à ceci, je l'ai simplifiée autant que possible pour mettre en évidence le problème:

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

Cette requête me donne l'erreur suivante: "Erreur: 141 Une instruction SELECT qui attribue une valeur à une variable ne doit pas être combinée avec des opérations d'extraction de données."

Pour l’instant, le seul moyen de contourner ce problème est d’insérer les données de la table dérivée dans une table temporaire, puis de les sélectionner à nouveau. Ce qui fonctionne bien, mais le fait que cela ne fonctionne pas me contrarie. Y a-t-il une meilleure façon de faire cela?

Était-ce utile?

La solution

L’erreur apparaît, comme décrit à la section 12.5.3 esd 4 & amp; 7, il fonctionne bien dans 12.5.4 esd 4 & amp; 6.

On dirait un bogue corrigé, vos seules options semblent être une solution de contournement ou un correctif.

Vous avez trouvé ce qui semble être le bug 377625

.

Autres conseils

Je viens de lancer votre code contre 12.5.3 et il s’analyse parfaitement ... ne renvoie rien mais il fonctionne. Avez-vous peut-être un peu trop simplifié le problème car je ne vois pas du tout de message d'erreur.

Soyons clairs: ce qui suit s’exécute et renvoie ce que vous attendez.

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top