SQL求助: 在写SQL语句时,我想要调用其他表查询的结果拼接上一个字符串作为表名,但是执行语句时, 20

报错说我查的字段不在表中(标识符无效)。selectLYO_3_DB5_DBD84from(selecttable_namefromUSER_TABLESwhereTAB... 报错说我查的字段不在表中(标识符无效)。
select LYO_3_DB5_DBD84 from (select table_name from USER_TABLES where TABLE_NAME = (SELECT * FROM(SELECT concat(demo,'HISTORY') FROM HISTORY order by recordtime)where rownum=1));

表名为一个查询的结果:A1_LJ_HISDATA_LYO_3_HISTORY ,这个也是在数据库中存在的表,我搜索的字段也是该表存在的。
想知道为什么表名为查询结果后就不能正常执行查询操作了呢?应该怎么处理才能实现拼接后的字符串作为表名正常查询。

PS:因为表名不确定,所以想通过查询其他表的某一字段来拼接字符串凑成表名,然后查询想要的字段结果。
展开
 我来答
ahua0597
2017-03-02 · TA获得超过107个赞
知道小有建树答主
回答量:303
采纳率:50%
帮助的人:147万
展开全部
declare
v_tbl_nm varchar2(30);
v_sql varchar2(4000);
v_result varchar2(4000);
begin
select table_name into v_tbl_nm from USER_TABLES where TABLE_NAME = (SELECT * FROM(SELECT concat(demo,'HISTORY') FROM HISTORY order by recordtime)where rownum=1);
v_sql :='select LYO_3_DB5_DBD84 from ' || v_tbl_nm ;
execute immediate v_sql into v_result;
dbms_output.put_line(v_result);
end;
追问
只能通过存储过程实现吗? 查询结果为何不可用作表名直接用呢?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式