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;

相关推荐
十八旬4 分钟前
苍穹外卖项目实战(day7-1)-缓存菜品和缓存套餐功能-记录实战教程、问题的解决方法以及完整代码
java·数据库·spring boot·redis·缓存·spring cache
要一起看日出1 小时前
MVCC-多版本并发控制
数据库·mysql·mvcc
Hx__1 小时前
MySQL InnoDB 的 MVCC 机制
数据库·mysql
速易达网络1 小时前
ASP.NET MVC 连接 MySQL 数据库查询示例
数据库·asp.net·mvc
玉衡子2 小时前
MySQL基础架构全面解析
数据库·后端
梦中的天之酒壶2 小时前
Redis Stack扩展功能
数据库·redis·bootstrap
GreatSQL2 小时前
GreatSQL分页查询优化案例实战
数据库
Leo.yuan3 小时前
不同数据仓库模型有什么不同?企业如何选择适合的数据仓库模型?
大数据·数据库·数据仓库·信息可视化·spark
麦兜*3 小时前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
chat2tomorrow3 小时前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl