sql语句的表名可以是另一条语句的结果吗?具体如下

zhufenghappy 2009-06-09 10:16:23
我想一条语句实现select * from (SELECT TA.FLDTABLENAME FROM TSM_ENTITY_CONFIG TA WHERE TA.FLDTAG = '996003'),这样语法有问题我也知道为什么。我想问的是有什么语法可以一条语句实现,我不想两次打开数据库,如果两次就是如下当然可以实现:

SELECT TA.FLDTABLENAME FROM TSM_ENTITY_CONFIG TA WHERE TA.FLDTAG = '996003' --结果是个表名 TPR_ROLES
select * from TPR_ROLES --在上面语句的查询结果的到得表中查找,这样可以得到TPR_ROLES中的记录
...全文
83 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
inthirties 2009-06-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 welyngj 的回复:]
可以的。
就是子查询。
select * from (SELECT TA.FLDTABLENAME FROM TSM_ENTITY_CONFIG TA WHERE TA.FLDTAG = '996003') TPR_ROLES
[/Quote]

这个应该不行,sql不能直接执行动态的表名的,

用动态sql执行可以

参考execute immediate


karin3 2009-06-09
  • 打赏
  • 举报
回复
动态sql文可以,静态的不清楚啊
ybkenan 2009-06-09
  • 打赏
  • 举报
回复
當然可以。就如一樓所說、
hjianke 2009-06-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 welyngj 的回复:]
可以的。
就是子查询。
select * from (SELECT TA.FLDTABLENAME FROM TSM_ENTITY_CONFIG TA WHERE TA.FLDTAG = '996003') TPR_ROLES
[/Quote]
lz的意思是从查询出来的表名那个表中再进行查询,相当于
SELECT TA.FLDTABLENAME FROM TSM_ENTITY_CONFIG TA WHERE TA.FLDTAG = '996003'
得到表名TPR_ROLES,然后
select * from TPR_ROLES;
1楼查出来的结果应该还是TA.FLDTABLENAME这个字段吧
simonezhlx 2009-06-09
  • 打赏
  • 举报
回复
可以调用 execute 存储过程来拼装SQL语句,楼上的做法不是当做表名来处理的。
但是拼装 sql 语句,可能不是一条SQL语句就能完成的,不知道楼主能不能接受。
welyngj 2009-06-09
  • 打赏
  • 举报
回复
可以的。
就是子查询。
select * from (SELECT TA.FLDTABLENAME FROM TSM_ENTITY_CONFIG TA WHERE TA.FLDTAG = '996003') TPR_ROLES

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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