繁体   English   中英

使用表名作为变量的SQL选择

[英]sql select with tablename as variable

我有几个只能使用sybase访问的表。 我需要编写一个查询,该查询将从7月提取数据到指定的日期参数(例如201507-201512)。 输入日期参数​​后,我需要访问sybase上具有以下名称的表:ff_vv_201507_tt至ff_vv_201512_tt。

我虽然可能将yyyymm作为变量。 我不确定如何实现此功能,因为我对SQL还很陌生。

我尝试从sybase访问一个表,但是我的代码似乎不起作用:

DECLARE @Table_Name sysname, @DynamicSQL nvarchar(4000)

SET @Table_Name = 'ff_vv_201507_tt'

SET @DynamicSQL =  'select 
*
FROM OPENQUERY(SADATABASE, 'select 
*
                       from  ' @Table_Name ' 
                                         )''

EXECUTE sp_executesql @DynamicSQL

您的帮助将不胜感激。

谢谢

您可以使用内联sql在Shell脚本中执行此操作。 这样,您将轻松生成参数并将其传递给存储的proc,并使用给定的参数动态创建表,例如:

$PARAM="XXXXX"
$PARAM2="YYYYY"
ret=`$ISQL -U$SQL_USER -P$SQL_PASSWD << __XXX
set nocount on
go
use mydatabase
go

DECLARE @batchId INT
select @batchId = 99
exec myStoreProc @batchId, "${PARAM}", "${PARAM2}"
go
__XXX`

如果要在字符串中使用单引号,则需要通过使用两个单引号来“转义”它们。

SET @DynamicSQL =  'select * FROM OPENQUERY(SADATABASE,''select * from '+@Table_Name+''')'

为什么这么复杂,这应该很好。

SET @DynamicSQL =  'select * FROM ' +@Table_Name 

EXECUTE @DynamicSQL

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM