oracle 存储过程实现循环增删字段


declare
    v_sql VARCHAR2(4000);
BEGIN
    -- 使用循环删除记录
    FOR i IN 1..13 LOOP
            DELETE FROM student_info1 WHERE sno = i;
            DELETE FROM student_info WHERE sno = i;
        END LOOP;

    SAVEPOINT sp0;

    -- 使用循环插入记录
    FOR i IN 1..13 LOOP
            INSERT INTO student_info (sno, name, sex) VALUES (i, '张三','男');
            INSERT INTO student_info1 (sno, name, sex) VALUES (i,'李四', '女');

                SAVEPOINT sp1;
        END LOOP;

    -- 使用循环插入字段
    FOR i IN 1..10 LOOP
            v_sql := 'ALTER TABLE student_info ADD (' || 'column' || i || ' VARCHAR2(50)  DEFAULT ''默认值0/1'')';
            EXECUTE IMMEDIATE v_sql;
            update student_info set name=2 where sno=i;
        END LOOP;
    SAVEPOINT sp3;



    insert into student_info (sno, name, sex) values (2, '王五', '男');    -- 这条语句将违反唯一性约束
    SAVEPOINT sp4;

    commit;
exception
    when others then
        rollback to sp3;
        -- 报错信息
        dbms_output.put_line(dbms_utility.format_error_backtrace);
        dbms_output.put_line(sqlcode ||' : ' || sqlerrm);
        commit;
end;



DECLARE
    v_sql VARCHAR2(4000);
BEGIN
    FOR i IN 1..10 LOOP -- 假设你要删除10列,根据实际情况调整
    v_sql := 'ALTER TABLE student_info DROP COLUMN column' || i;
    EXECUTE IMMEDIATE v_sql;
        END LOOP;
END;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值