前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >利用动态SQL创建视图

利用动态SQL创建视图

作者头像
overme
发布2022-01-18 14:21:50
1.3K0
发布2022-01-18 14:21:50
举报
文章被收录于专栏:数据开发笔记数据开发笔记
场景

数据库中有一套有命名规则的表,定期会新增

需要利用动态SQL来创建视图 我们可以利用USER_TABLES表查询出列表

然后做循环字符拼接上UNION ALL

代码语言:javascript
复制
DECLARE 
V_SQL VARCHAR2(4000);
BEGIN
  V_SQL:='CREATE OR REPLACE VIEW V_DWD_PASSWORD AS ';
  FOR I IN(
SELECT ' SELECT T.PLAT,
                T.DIRECT,
                T.DEVIC,
                T.PASSTIME,
                T.SPEED,
                T.SITENAME 
 FROM '||TABLE_NAME ||' T UNION ALL ' AS TEXT FROM USER_TABLES T
WHERE T.TABLE_NAME LIKE '%DWD_PASSDATA%' ORDER BY TABLE_NAME) LOOP
V_SQL:=V_SQL||CHR(10)||I.TEXT;
END LOOP;
--最后一个循环的 UNION ALL 需要切割剔除
V_SQL:=SUBSTR(V_SQL,0,LENGTH(V_SQL)-10);
DBMS_OUTPUT.PUT_LINE(V_SQL);
EXECUTE IMMEDIATE V_SQL;
END;

视图还是蛮整齐的

我们封装成存储过程的时候要注意一点权限问题 在之前有说

动态SQL还可以用在多表(根据日期月份生成)上的创建或者查询。

代码语言:txt
复制
         本站文章除注明转载/出处外,均为本站原创,转载前请务必署名,转载请标明出处
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022/01/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档