使用变量查询总是返回变量值
我创建了以下过程以最终获取值(而不是最后的列名称)。但是,如果仅在最后一个查询中使用声明的@ColumnName,则只会看到列名“XXX”,而不是该行的XXX值。使用变量查询总是返回变量值
我有以下几点:
DECLARE @ColumnName AS VARCHAR(50)
SET @ColumnName = (select column_name FROM INFORMATION_SCHEMA.COLUMNS where table_name = 'History' and ORDINAL_POSITION = 2)
SELECT @ColumnName from kat.[dbo].[History]
我想获得的是以下结果:
select XXX from kat.[dbo].[History]
即使@ColumName有这种不正常的XXX的值。
在左我得到我的结果(列的总名称,它的右侧是所需的值)
1-XXX, The value from XXX
2-XXX, the next value from XXX
3-XXX, the next value from XXX
很多感谢,
吉
你需要动态查询
EXEC('SELECT '[email protected]+' from kat.[dbo].[History] ')
许多感谢JaydipJ – Katherine99
乐意帮忙; p –
我也可以使用动态查询的结果来插入此查询中的值吗?例如,插入表值((EXEC('SELECT'+ @ ColumnName +'from kat。[dbo]。[History]'))。这是可能的吗? – Katherine99
我假设历史有很多行。您感兴趣的是XXX的哪个价值? –
因为@ColumnName是一个varchar,它总是会返回一个字符串。在SQL Server中,没有列变量类型。相反,您需要使用名为[动态SQL(源MS文档)]的技术(https://docs.microsoft.com/en-us/sql/odbc/reference/dynamic-sql)。 –