Pergunta

Só para esclarecer, eu estou correndo Sybase 12.5.3, mas eu sou levado a acreditar que isso vale para SQL Server 2005 também. Basicamente, eu estou tentando escrever uma consulta que parece um pouco com isso, eu simplificado-lo tanto quanto possível destacar o 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 dá o seguinte erro: "Erro:. 141 Uma instrução SELECT que atribui um valor a uma variável não deve ser combinada com operações de recuperação de dados"

O único trabalho ao redor que eu tenho para isso até agora, é inserir os dados em tabela derivada em uma tabela temporária e, em seguida, selecione-o de volta para fora novamente. Que bem funciona, mas o fato de que isso não funciona irrita-me. Existe uma maneira melhor de fazer isso?

Foi útil?

Solução

O erro parece como descrito em 12.5.3 esd 4 e 7, ele funciona muito bem em 12.5.4 esd 4 e 6.

Parece um bug que foi corrigido, suas únicas opções parecem ser solução ou patch.

ter encontrado o que parece ser o bug 377625

Outras dicas

Eu apenas corri o seu código contra 12.5.3 e ele analisa bem ... não retorna nada, mas é executado. Você talvez simplificou o problema um pouco demais, porque eu não estou vendo nenhum mensagens de erro em tudo.

Só para ficar claro, as seguintes pistas e retorna o que você esperaria.

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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top