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;
07-05
2118
