Как объединить присвоение переменной с операциями извлечения данных в T-SQL

StackOverflow https://stackoverflow.com/questions/239122

Вопрос

Просто для пояснения, я использую Sybase 12.5.3, но я уверен, что это справедливо и для SQL Server 2005. По сути, я пытаюсь написать запрос, который выглядит примерно так, я максимально упростил его, чтобы осветить проблему:

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

Этот запрос выдает мне следующую ошибку: " Ошибка: 141 Оператор SELECT, который присваивает значение переменной, нельзя сочетать с операциями извлечения данных. "

Единственный обходной путь, который у меня есть для этого, - это вставить данные производной таблицы во временную таблицу, а затем снова выбрать ее обратно. Что работает хорошо, но тот факт, что это не работает, раздражает меня. Есть ли лучший способ сделать это?

Это было полезно?

Решение

Ошибка действительно появляется, как описано в 12.5.3 esd 4 & amp; 7, он работает нормально в 12.5.4 esd 4 & amp; 6.

Похоже, что ошибка была исправлена, ваши единственные варианты - обходной путь или исправление.

Нашли, как представляется, ошибку 377625

Другие советы

Я только что проверил ваш код на 12.5.3, и он хорошо разбирается ... ничего не возвращает, но он работает. Возможно, вы слишком сильно упростили проблему, потому что я вообще не вижу сообщений об ошибках.

Просто чтобы прояснить, следующее запускается и возвращает то, что вы ожидаете.

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top