Oracle 建表的存储过程

建表的存储过程

下面是建表的存储过程,用途:通过不同的表,根据不同过滤条件,得到某个字段,例如neid,然后创建一个新表T,表T的表名为拼接XXXX_XXX_neid,表T的字段自行添加

  • xxx:命名存储过程名称,例如:create_table

  • 表A :例如:表user

  • 条件A :例如:select ne_id from user

    CREATE OR REPLACE PROCEDURE XXX存储名(p_table_name IN VARCHAR2) IS
    -- 定义变量来存储动态 SQL 查询
    v_sql_query VARCHAR2(1000);

    复制代码
      -- 定义一个游标来获取符合条件的 neid
      TYPE t_neid IS REF CURSOR;
      c_neid t_neid;
    
      -- 定义变量来存储表名
      v_table_name VARCHAR2(100);

    BEGIN
    -- 根据传入的表名构建动态 SQL 查询
    IF p_table_name = '表A' THEN
    v_sql_query := '条件A';
    ELSIF p_table_name = '表B' THEN
    v_sql_query := '条件B';
    ELSIF p_table_name = '表C' THEN
    v_sql_query := '条件C';
    ELSE
    RAISE_APPLICATION_ERROR(-20001, 'Invalid table name: ' || p_table_name);
    END IF;

    复制代码
      -- 打开动态游标
      OPEN c_neid FOR v_sql_query;
    
      -- 循环遍历游标中的每一行
      LOOP
          FETCH c_neid INTO v_table_name;
          EXIT WHEN c_neid%NOTFOUND;
    
          -- 构建表名
          v_table_name := 'XXXX_XXX_' || v_table_name;
    
          -- 检查表是否存在
          DECLARE
              v_count NUMBER;
          BEGIN
              SELECT COUNT(*)
              INTO v_count
              FROM user_tables
              WHERE table_name = UPPER(v_table_name);
    
              -- 如果表不存在,则创建表
              IF v_count = 0 THEN
                  EXECUTE IMMEDIATE 'CREATE TABLE ' || v_table_name || ' (
                      XXX VARCHAR2(512),
                      XXX  VARCHAR2(32),
                      XXX  VARCHAR2(32),
                      XXX  VARCHAR2(128),
                      XXX  VARCHAR2(64)
                  )';
                  DBMS_OUTPUT.PUT_LINE('Table ' || v_table_name || ' created.');
              ELSE
                  DBMS_OUTPUT.PUT_LINE('Table ' || v_table_name || ' already exists.');
              END IF;
          END;
      END LOOP;
    
      -- 关闭游标
      CLOSE c_neid;

    END create_alarm_his_table;

相关推荐
这个DBA有点耶3 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
DBA_G3 天前
从地面到云霄:GBase数据库在民航三大场景的落地实践
数据库
自由能燃气设备3 天前
商用全预混低氮冷凝锅炉免费方案vs付费方案对比+选型避坑指南
大数据·数据库·人工智能
科创致远3 天前
科创致远 ESOP 系统核心效能与实战价值展示
大数据·数据库·人工智能·精益工程
2601_962218613 天前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法
张洛闻Eren3 天前
k8s云原生【第十课】:水平 Pod 自动扩缩容
运维·数据库·云原生·kubernetes·github
于平安3 天前
MySQL-触发器
数据库·mysql
白远山3 天前
上海24小时自助健身房解决方案实战指南与经验分享
java·数据库·架构·需求分析
Omics Pro3 天前
斯坦福Nature+Science|广义虚拟细胞基础大模型
数据库·人工智能·算法·机器学习·自然语言处理
2603_965148113 天前
AI+API选品:下一代智能商务助手雏形已现
java·大数据·数据库·人工智能·数据挖掘