Sql 呃这也解决了这个问题。我要说的是这篇文章标题中的“模糊错误信息”question@daOnlyBG在注释出现之前,您没有通过运行代码获得表名,而是得到了一个完整的查询。Tab Alleman的答案会帮你做到这一点。我只是指出了错误的根源,以及如何规避it@
Sql 呃这也解决了这个问题。我要说的是这篇文章标题中的“模糊错误信息”question@daOnlyBG在注释出现之前,您没有通过运行代码获得表名,而是得到了一个完整的查询。Tab Alleman的答案会帮你做到这一点。我只是指出了错误的根源,以及如何规避it@,sql,sql-server,dynamic-sql,Sql,Sql Server,Dynamic Sql,呃这也解决了这个问题。我要说的是这篇文章标题中的“模糊错误信息”question@daOnlyBG在注释出现之前,您没有通过运行代码获得表名,而是得到了一个完整的查询。Tab Alleman的答案会帮你做到这一点。我只是指出了错误的根源,以及如何规避it@Eli谢谢,我现在明白了,我只是得到了一个查询结果,而不是对象的名称。我将等待塔巴勒曼对我的评论的回应,因为他建议的答案也会产生类似的错误反应;控制台在SET@oldtablename后面的select下面加下划线,并警告'select'语法不
呃这也解决了这个问题。我要说的是这篇文章标题中的“模糊错误信息”question@daOnlyBG在注释出现之前,您没有通过运行代码获得表名,而是得到了一个完整的查询。Tab Alleman的答案会帮你做到这一点。我只是指出了错误的根源,以及如何规避it@Eli谢谢,我现在明白了,我只是得到了一个查询结果,而不是对象的名称。我将等待塔巴勒曼对我的评论的回应,因为他建议的答案也会产生类似的错误反应;控制台在
SET@oldtablename
后面的select
下面加下划线,并警告'select'
语法不正确。@daOnlyBG I更新了选项卡的答案,效果良好。嵌套在集合后的查询需要包含在括号内。@Eli更新尚未显示,但我现在理解了正确的调整,脚本工作正常。谢谢你和Tab。实际上,这并不能解决问题;控制台在SET@oldtablename
后面的select
下面加下划线,并警告'select'
语法不正确。@daOnlyBG I更新了选项卡的答案,效果良好。嵌套在集合后的查询需要包含在括号内。@Eli更新尚未显示,但我现在理解了正确的调整,脚本工作正常。谢谢你和Tab。
DECLARE @oldtablename VARCHAR(MAX)
DECLARE @oldtablequery VARCHAR(MAX)
SET @oldtablename = 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE ''%tablekeywords_test%''
AND CONVERT(varchar(8), RIGHT(TABLE_NAME, 8), 112) <= CONVERT(VARCHAR(8), GETDATE(), 112)'
exec(@oldtablename)
-- up until here, everything works fine. The following does not:
--EXEC('select top 5 * from databasename.dbo.'+@oldtablename+'')
SET @oldtablequery = 'SELECT TOP 5 * FROM databasename.dbo.'+@oldtablename+';'
exec(@oldtablequery)
(1 row(s) affected)
Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'SELECT'.
DECLARE @oldtablename VARCHAR(MAX)
DECLARE @oldtablequery VARCHAR(MAX)
SET @oldtablename = 'SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE ''%tablekeywords_test%''
AND CONVERT(varchar(8), RIGHT(TABLE_NAME, 8), 112) <= CONVERT(VARCHAR(8), GETDATE(), 112)'
exec(@oldtablename)
-- up until here, everything works fine. The following does not:
--EXEC('select top 5 * from databasename.dbo.'+@oldtablename+'')
SET @oldtablequery = 'SELECT TOP 5 * FROM databasename.dbo.'+@oldtablename+';'
print @oldtablequery
DECLARE @oldtablename VARCHAR(MAX)
DECLARE @oldtablequery VARCHAR(MAX)
SET @oldtablename = (
SELECT
TOP 1 TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE '%tablekeywords_test%'
AND CONVERT(varchar(8), RIGHT(TABLE_NAME, 8), 112) <= CONVERT(VARCHAR(8), GETDATE(), 112));
-- up until here, everything works fine. The following does not:
--EXEC('select top 5 * from databasename.dbo.'+@oldtablename+'')
SET @oldtablequery = 'SELECT TOP 5 * FROM databasename.dbo.'+@oldtablename+';'
exec(@oldtablequery)