我在SQL Server 2008上使用动态SQL从一行中选择指定的列,但我不断收到以下错误:
无效的对象名称“表单”
我的代码如下:
DECLARE @SQL varchar(MAX)
SET @SQL = 'select
[City],[Place]'
+
'
from Form where [Age:] = 20'
EXEC (@SQL)
我也尝试使用+ QUOTENAME(@Table)
并将@Table
声明为nvarchar(MAX)
,但无法定义@Table
基本上是我数据库中的Form
表。
当我检查上一个examples时,人们能够以相同的方式从表中选择列而不会出错,那么我得到错误的原因是什么?我应该使用@QUOTENAME
功能吗?
帮助将不胜感激。
答案 0 :(得分:2)
尝试以下查询,如果您仍然首先检查错误,请先查看基本信息。
DECLARE @SQL varchar(MAX)
SET @SQL = 'select [City],[Place] from [Form] where [Age] = 20'
EXEC (@SQL)
[Form]
? ":"
是col name吗?答案 1 :(得分:1)
您描述@table
。表是保留关键字,因此不使用该字是一种很好的做法。让我们假设@mytable
是一个包含查询表名的变量。在这种情况下,您可以像使用字符串的其余部分一样进行连接。 您还需要连接到您尝试查询的数据库。
例如:
DECLARE @SQL varchar(MAX)
DECLARE @mytable varchar(1000) = 'Form' --put the table name here
SET @SQL = 'select [City], [Place] '
+ 'from ' + @mytable + ' where [Age:] = 20'
EXEC (@SQL)