【发布时间】:2017-01-25 16:23:55
【问题描述】:
我的任务是将一个包含多个 CRUD 操作的存储过程转换为一个定义了函数的包。
当我在 Oracle SQL Developer 中创建包时,我定义了可能的函数:
FUNCTION func1 RETURN NUMBER;
FUNCTION func2 RETURN NUMBER;
etc...
我在“包体”中有对应的代码:
FUNCTION func1 RETURN NUMBER
IS
BEGIN
-- some CRUD operation
END;
RETURN 0;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line('FUNCTION func1: error ' || ERR_NUM || ', Msg:' || ERR_MSG);
ROLLBACK;
END func1;
当我运行它们时,我可以从提供的列表中选择要运行的函数。我的问题是,我需要写什么或做什么才能让所有功能通过一个命令按顺序运行?
谢谢
【问题讨论】:
-
听起来你可能只是在你的包中添加另一个方法(函数或过程,根据需要),它按顺序调用它们。我不知道哪个会为你做这件事。
-
顺便说一句,您的提交无效,因为它在返回语句之后
-
如果你想要一种更通用的方法来做到这一点,你需要编写一个接受某种对象类型数组的过程,其中该类型有某种“run()”方法,所以该过程可以逐步遍历执行每个方法的数组。