在 select * from 语句中表名能否用变量名(存储过程中)

recollectpainer 2004-06-28 06:05:57
有若干个结构相同的表
如每年一个表:2002表、2003表、2004表
每年的数据都在各自的表中

问:能否在存储过程中给定一个参数令其去相应的表中检索数据

如:
DECLARE @TableName NVARCHAR(255)
SELECT @TableName = '2003表'
SELECT * FROM @TableName WHERE 条件


ps: 我自己试了一下,可总说 变量@TableName 未定义
...全文
208 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
recollectpainer 2004-06-28
  • 打赏
  • 举报
回复
呵呵,谢谢大家
问题搞定
现在结贴
wtadminxjeri 2004-06-28
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
DECLARE @TableName NVARCHAR(255)
SELECT @TableName = '2003表'
set @sql='SELECT * FROM '+ @TableName
exec(@sql)
leeboyan 2004-06-28
  • 打赏
  • 举报
回复
create proc procname
as
DECLARE @TableName NVARCHAR(255)
SET @TableName = '2003表'
EXEC ('SELECT * FROM '+@TableName+' WHERE 条件')
...
go
pbsql 2004-06-28
  • 打赏
  • 举报
回复
拼成字符串再执行,如:
DECLARE @TableName NVARCHAR(255)
SELECT @TableName = '2003表'
exec('SELECT * FROM '+@TableName+' WHERE '+条件)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧