假设我想在sql查询中选择一个常量值,我可以做这样的事情:
select name,age,'tick' from tableA
我想使用存储过程动态生成 sql 查询。例如:
SELECT @SQL = 'SELECT CID,DOB, NAME, '+@Scname+' from ' + @TableName
@TableName,@Scname是 while 循环中动态生成的变量。在这里,@Scname在对@TableName执行查询时被解释为列名而不是常量字符串。我尝试使用转义字符如下:
SELECT @SQL = 'SELECT CID,DOB, NAME, "'+@Scname+'" from ' + @TableName
但它返回一个充满零的浮点值,而不是包含在@Scname中的字符串。
我认为以下内容应该有效
SET @SQL = 'SELECT CID,DOB, NAME,'+''''+@Scname+''''+' from '+ @TableName
尝试
SELECT @SQL = 'SELECT CID,DOB, NAME,' + QUOTENAME(@Scname, '''') + ' from ' + @TableName