创建Oracle Package Body
发布时间:2021-02-07 10:22:13 所属栏目:站长百科 来源:网络整理
导读:我正在尝试为包装奠定基础,但即使开始也遇到了麻烦.我已经成功创建了一个基本的包规范,并且只想测试包体,但是我无法编译它.规范代码是: CREATE OR REPLACE PACKAGE synchronize_my_data AS PROCEDURE synchronize_data(p_run_date IN date);END synchronize
我正在尝试为包装奠定基础,但即使开始也遇到了麻烦.我已经成功创建了一个基本的包规范,并且只想测试包体,但是我无法编译它.规范代码是: CREATE OR REPLACE PACKAGE synchronize_my_data AS PROCEDURE synchronize_data(p_run_date IN date); END synchronize_my_data; 这是包体代码: CREATE OR REPLACE PACKAGE BODY synchronize_my_data IS PROCEDURE synchronize_data(p_run_date IN date) IS PROCEDURE process_deletes(p_run_date IN date) IS BEGIN dbms_output.put_line('Run Date: ' || to_char(p_run_date,'MM/DD/YYYY')); END process_deletes; BEGIN process_deletes(p_run_date); END synchronize_data; END synchronize_my_data; 我不断收到编译错误,但无法弄清楚代码有什么问题.它似乎是基本代码,我只是遗漏了一些明显的东西吗? 解决方法该代码似乎为我编译.你遇到了什么错误?SQL> CREATE OR REPLACE PACKAGE synchronize_my_data 2 AS 3 PROCEDURE synchronize_data(p_run_date IN date); 4 END synchronize_my_data; 5 / Package created. SQL> CREATE OR REPLACE PACKAGE BODY synchronize_my_data 2 IS 3 PROCEDURE synchronize_data(p_run_date IN date) IS 4 PROCEDURE process_deletes(p_run_date IN date) IS 5 BEGIN 6 dbms_output.put_line('Run Date: ' || to_char(p_run_date,'MM/DD/YYYY')); 7 END process_deletes; 8 BEGIN 9 process_deletes(p_run_date); 10 END synchronize_data; 11 12 END synchronize_my_data; 13 / Package body created. 从一般的风格角度来看,在包体中的另一个过程中定义过程通常没什么意义.使用包的好处之一是您可以同时拥有公共和私有过程.您可以将process_deletes过程创建为私有过程,只需在主体中定义它而不在规范中定义它. CREATE OR REPLACE PACKAGE BODY synchronize_my_data IS PROCEDURE process_deletes(p_run_date IN date) IS BEGIN dbms_output.put_line('Run Date: ' || to_char(p_run_date,'MM/DD/YYYY')); END process_deletes; PROCEDURE synchronize_data(p_run_date IN date) IS BEGIN process_deletes(p_run_date); END synchronize_data; END synchronize_my_data; 这不应该与你得到的任何错误有任何关系.但它应该使您的代码更容易处理. (编辑:瑞安网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |