ORACLE语句,将字符串和变量拼起来的内容当字段名和表名

pabsme_vw_table这个表里面是(序号serial_number、表英文名en_t_name、中文名ch_t_name这三个字段)我想查pabsme_vw_ta... pabsme_vw_table这个表里面是 ( 序号serial_number、表英文名en_t_name、中文名ch_t_name这三个字段)
我想查pabsme_vw_table这个表里面的(表英文名en_t_name)这些表名在数据库中的最小时间。
然后把查询出的最小时间,表名插入pabsme_t_mindate 表。
但是pabsme_vw_table这个表里面的(表英文名en_t_name)在数据库中的表明称要加上'sme.qq'的前缀。各位大神,求解~~谢谢!!!(不能用存储程序~~可以用delcare )

我写了一个 但是不对啊,谁能帮我重新写一个
delcare
t_number NUMBER:=1
while t_number<=77 loop
insert into pabsme_t_mindate
select min(data_date),'sme.qq'||(select en_t_name from pabsme_vw_table where serial_number=t_number)
from 'sme.qq'||(select en_t_name from pabsme_vw_table where serial_number=t_number)
commit;
t_number:=t_number+1;
end loop;
END;
展开
 我来答
Storm_duck
推荐于2016-11-02 · TA获得超过1629个赞
知道小有建树答主
回答量:1104
采纳率:82%
帮助的人:452万
展开全部
我没看懂你写的脚本。
第一:pabsme_t_mindate 表里面有几个字段?如果就两个字段,那还好,如果有2个以上字段,写的语句不对:insert into pabsme_t_mindate
select min(data_date),'sme.qq'||(select en_t_name from pabsme_vw_table where serial_number=t_number);

第二:在select语句中,第二个查询字段不需要用子查询语句吧?
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
pp7415263
推荐于2018-03-13 · 超过19用户采纳过TA的回答
知道答主
回答量:36
采纳率:100%
帮助的人:34.5万
展开全部

可以用动态语句实现,你试试:

DECLARE
    T_NUMBER NUMBER := 1;
    V_SQL    VARCHAR2(1000);
BEGIN
    WHILE T_NUMBER <= 77 LOOP
        SELECT 'insert into PABSME_T_MINDATE (TABLE_DATE, TABLE_NAME) SELECT MIN(data_date),''sme.qq' ||
               EN_T_NAME || ''' FROM sme.qq' || EN_T_NAME
          INTO V_SQL
          FROM PABSME_VW_TABLE
         WHERE SERIAL_NUMBER = T_NUMBER;
        DBMS_OUTPUT.PUT_LINE(V_SQL);
        EXECUTE IMMEDIATE (V_SQL);
        T_NUMBER := T_NUMBER + 1;
        V_SQL    := '';
    END LOOP;
END;
追问

亲,提示我表或视图不存在,里面的表我看了都存在呀~~

追答
上面第11行有打印出来语句,你看看那里面的语句能不能执行?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式