查询的字段做表名参数

Dision LI 2010-10-15 04:49:14

DECLARE @SQL AS VARCHAR(2000),@EncodeID AS VARCHAR(2000)
BEGIN
SET @SQL='SELECT * FROM @EncodeID=(SELECT TableName FROM dbo.CAccountingProjectType WHERE id=1)'
exec(@SQL)
END


如何修改
...全文
43 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
budong0000 2010-10-15
  • 打赏
  • 举报
回复

--上面的错啦
DECLARE @SQL AS VARCHAR(2000),@EncodeID AS VARCHAR(2000)
BEGIN
select @EncodeID = TableName FROM dbo.CAccountingProjectType WHERE id=1

set @sql = 'select * from '+@encodeid

exec(@SQL)
END
Dision LI 2010-10-15
  • 打赏
  • 举报
回复
SELECT TableName FROM dbo.CAccountingProjectType WHERE id=1
得出表名
再根据表名取这表的数据
SQL
楼上2位都没得
dawugui 2010-10-15
  • 打赏
  • 举报
回复
DECLARE @SQL AS VARCHAR(2000),@EncodeID AS VARCHAR(2000)
BEGIN

select @EncodeID=TableName FROM dbo.CAccountingProjectType WHERE id=1

SET @SQL='SELECT * FROM ' + @EncodeID

exec(@SQL)

END
budong0000 2010-10-15
  • 打赏
  • 举报
回复
DECLARE @SQL AS VARCHAR(2000),@EncodeID AS VARCHAR(2000)
BEGIN
SET @SQL='SELECT '+@EncodeID+'= TableName FROM dbo.CAccountingProjectType WHERE id=1
'
exec(@SQL)
set @sql = 'select * from '+@encodeid

exec(@SQL)
END
振乾 2010-10-15
  • 打赏
  • 举报
回复

DECLARE @SQL AS NVARCHAR(2000),@EncodeID AS VARCHAR(2000)
SET @EncodeID=''
BEGIN
SET @SQL='SELECT * FROM @EncodeID=(SELECT TableName FROM dbo.CAccountingProjectType WHERE id=1)'
EXEC sp_executesql @SQL,N'@EncodeID varchar(2000) output',@EncodeID OUTPUT
END


使用sp_executesql ,注意 @SQL 一定要为 NVarchar 类型,
在 参数前面 要加 N

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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