[英]sql syntax error (incorrect syntax near =)
Hello I am having a problem here.您好,我在这里遇到问题。 I wanted to read subjectname from a dynamic table name and the save it to a variable.我想从动态表名中读取 subjectname 并将其保存到变量中。 but i am getting an error但我收到一个错误
DECLARE @retval varchar(200)
DECLARE @sSQL nvarchar(500);
DECLARE @ParmDefinition nvarchar(500);
DECLARE @academicYear varchar(200) = '20212022';
Declare @subjectId varchar(200) = '202041962';
DECLARE @tablename nvarchar(50) = 'abc' + CAST(@academicyear As varchar)
DECLARE @CONDITION NVARCHAR(128)
SET @CONDITION = 'WHERE [subjectid] = 202041962'
SELECT @sSQL = N'SELECT @retvalOUT = [subjectname] FROM ' + @tablename + @CONDITION;
SET @ParmDefinition = N'@retvalOUT varchar OUTPUT';
EXEC sp_executesql @sSQL, @ParmDefinition, @retvalOUT=@retval OUTPUT;
SELECT @retval;
If you actually looked at the value of @sSQL
eg by print
ing it, you'll note it contains FROM abc20212022WHERE
, therefore,如果您实际查看了@sSQL
的值,例如通过print
它,您会注意到它包含FROM abc20212022WHERE
,因此,
you are not delimiting your table names - use quotename()
你没有分隔你的表名 - 使用quotename()
you need a space between your table name and the where
您的表名和where
之间需要一个空格
you should always specify a length for a varchar value (you don't need to cast a variable when concatenating two strings but you should be consistent with your use of [n]varchar)您应该始终为varchar值指定一个长度(连接两个字符串时不需要转换变量,但您应该与 [n]varchar 的使用保持一致)
using concat to concatenate strings is easier and safer使用concat连接字符串更简单、更安全
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.