Oracle 插入数据的存储过程

Oracle 插入数据的存储过程

这是用来,把实时表里面的数据插入到某个表A获取到的字段neid,然后拼接成xxx_xxx_neid历史表,接着往里面插入数据

CREATE OR REPLACE PROCEDURE XXX自定义名 IS
    -- 定义变量
    v_ne_id_table_name VARCHAR2(100);        
    v_ne_id VARCHAR2(100);                  
    v_sql_query VARCHAR2(2000);              
    v_current_date DATE := TRUNC(SYSDATE);  

    TYPE t_neid_cursor IS REF CURSOR;
    c_neid_cursor t_neid_cursor;

    v_info_row 实时表%ROWTYPE;

    TYPE t_alarm_cursor IS REF CURSOR;
    c_alarm_cursor t_alarm_cursor;

    -- 插入数据到历史表的通用过程
    PROCEDURE insert_data_into_history(v_ne_id_table_name IN VARCHAR2) IS
    BEGIN
        -- 从实时表中选择需要插入的数据
        v_sql_query := '查询实时表数据 ';
        OPEN c_alarm_cursor FOR v_sql_query;
        LOOP
            FETCH c_alarm_cursor INTO v_alarm_info_row;
            EXIT WHEN c_alarm_cursor%NOTFOUND;

           -- 使用 INSERT 语句简单插入数据
			v_sql_query := 'INSERT INTO ' || v_ne_id_table_name || ' (xxx1, xxx2,xxx3,xxx4) ' ||
                   'VALUES (:1, :2, :3, :4)';

			-- 执行 INSERT 语句 实时表的字段
		    EXECUTE IMMEDIATE v_sql_query USING 
		        v_info_row .xxx1, 
		        v_info_row .xxx2, 
		        v_info_row .xxx3,
		        v_info_row .xxx4;

        END LOOP;
        CLOSE c_alarm_cursor;
    END insert_data_into_history;	

BEGIN
    -- 处理表A
    v_sql_query := '查询表A的字段,例如:neid';
    DBMS_OUTPUT.PUT_LINE('Flood SQL: ' || v_sql_query);
    OPEN c_neid_cursor FOR v_sql_query;
    LOOP
        FETCH c_neid_cursor INTO v_ne_id;
        EXIT WHEN c_neid_cursor%NOTFOUND;

        v_ne_id_table_name := 'SCENE_ALARM_HIS_' || v_ne_id;
        DBMS_OUTPUT.PUT_LINE('Processing Table: ' || v_ne_id_table_name);

        insert_data_into_history(v_ne_id_table_name);
    END LOOP;
    CLOSE c_neid_cursor;
END ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值