[英]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.