2009-06-16 89 views

回答

3

Apparently not

INTO @variable_name[ ,...n] 

“允许从所涉及的列中的数据取到被放置到局部变量
每个变量在列表中,从左至右,与对应的列相关联在游标结果集中,每个变量的数据类型必须与相应结果集列的数据类型匹配或成为支持的隐式转换,变量数必须与游标选择列表中的列数匹配。


如果您正在寻找使用游标可能与CLR Stored procedures

1

即使有,你也不想。获取额外字段是SQL Server应用程序中降低性能的最常见原因之一。通过这样做,您可以限制优化器有效使用索引的能力。

如果不指定列名称,您会如何“建议您想要的值”?

+0

这是修复一些历史数据的一次性查询。我不关心表现。像nameofset ['fieldname']。我只是不想定义所有的领域。看起来这是不可能的,但:( – 2009-06-16 20:42:16

1

找到更好的灵活性为什么你需要使用游标?那些在SQL Server场景中被人们所诟病 - 大多数情况下,它们是不必要的,而且通常它们非常缓慢并且损害了性能。

你想用光标完成什么?难道你不能以基于集合的方式来实现它,并使用SQL Server的能力达到最大值?

马克

1

在2K5(SQL 2000中有不同的系统对象),使用SQL元数据能够快速地写出与表/列名的长列表查询:

SELECT 
    O.Name + '__' + C.Name + ' = ' + O.Name + '.' + C.Name + ',' 
FROM Sys.Objects O 
JOIN Sys.Columns C 
    ON C.Object_Id = O.Object_Id 
WHERE O.Name IN ('Table1', 'Table1') 
ORDER BY O.Name, C.Column_Id 

我不知道到底你想用结果集做什么,但这可能是一个体面的开始。

另外,你可以声明变量作为SQL_VARIANT和FETCH结果集为他们这样的:

DECLARE @Col1 SQL_VARIANT 

SELECT @Col1 = Table1.Column1 FROM Table1 

PRINT CONVERT(varchar(max), @Col1) 

我不知道这是什么斩获你虽然。

0

这仅建议那些每天使用SQL的人,不是专门回答这个问题。

RedGate产品SQL Prompt能够通过使用快捷键(Ctrl-B,Ctrl-W)将通配符扩展为单个字段名称。这可以为您节省大量时间,并且可以更轻松地从查询中删除几个字段,以便您需要大多数

0

在SQL2005中,您还可以右键单击表格并选择打开的表格。然后,您单击小SQL图标,您会看到select语句,就像从YourTable中选择*一样。再次单击!-icon select * from将被扩展为完整的字段列表。 祝你好运。