1

澄清一下,我正在运行 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 语句不得与数据检索操作结合使用。”

到目前为止,我唯一的解决方法是将派生表数据插入到一个临时表中,然后再次选择它。效果很好,但是这不起作用的事实让我很恼火。有一个更好的方法吗?

4

2 回答 2

2

该错误确实如 12.5.3 esd 4 和 7 中所述出现,它在 12.5.4 esd 4 和 6 中运行良好。

看起来像一个已修补的错误,您唯一的选择似乎是解决方法或修补程序。

发现似乎是错误 377625

于 2008-10-29T22:09:09.843 回答
1

我刚刚针对 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
于 2008-10-27T09:27:26.967 回答