我试图从动态SELECT
如何从动态SQL结果中提取值?
弄几个值这是我的代码:
DECLARE @sqlCommand varchar(1000)
DECLARE @colName varchar(20)
DECLARE @tableName varchar(20)
DECLARE @myNum int
DECLARE @varDate varchar(19)
DECLARE @myTime datetime2
set @varDate = getdate()
SET @colName = 'col1'
SET @tableName = 'table'
SET @sqlCommand = 'SELECT top 1 @myTime=mytime, @myNum=' + @colName + ' FROM ' + @tableName + ' WHERE mytime>=''' + @varDate + ''' ORDER BY mytime'
PRINT @sqlCommand
EXEC(@sqlCommand)
当我打印的SQL命令,这是我得到:
SELECT top 1 @myTime=mytime, @myNum=col1
FROM table
WHERE mytime>='Jul 25 2017 4:40PM'
ORDER BY mytime
当我试图EXEC
它,我得到这个错误:
Must declare the scalar variable "@myTime".
如果我这样做:
SET @sqlCommand = 'SELECT top 1 mytime, ' + @colName + ' FROM ' + @tableName + ' WHERE mytime>=''' + @varDate + ''' ORDER BY mytime'
它运作良好,但我需要使用该数据。
在此先感谢。
为什么你需要创建@sqlCommand,然后用exec()执行它? – DontThinkJustGo
@DontThinkJustGo。 。 。表名是动态的。 –
在sqlCommand声明之前创建一个临时表,并尝试将INSERT插入临时表而不是SELECT。在exec命令之后读取临时表的内容(编辑:用sp_executesql提供的解答提供了一个更好的解决方案) – Cristian