1

为了澄清,我运行的是Sybase 12.5.3,但我相信这也适用于SQL Server 2005。基本上,我想编写一个查询,看起来有点像这样,我已经简化它尽可能的突出问题:如何将变量赋值与T-SQL中的数据检索操作结合起来

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语句不能与数据检索操作结合使用。“

到目前为止,我所得到的唯一工作就是将派生表数据插入临时表中,然后再次选择它。哪些工作正常,但这不起作用令我感到厌烦。有一个更好的方法吗?

+0

MSSQL引发同样的错误消息! – Faiz 2009-12-15 13:46:51

回答

2

在12.5.3 ESD 4 & 7中确实出现错误,它在12.5.4 ESD 4 & 6.

看起来像一个经过修补的错误运行正常,你唯一的选择似乎是解决方法或补丁。

已找到似乎是bug 377625

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 
+0

我只看了@@版本,我们现在坐在: Adaptive Server Enterprise/12.5.3/EBF 13332 ESD#7/P/Linux Intel/Enterprise Linux/ase1253/1951/32位/ OPT/Fri Mar 24 00:40:52 2006 – ninesided 2008-10-28 00:00:00

相关问题