设为首页 - 加入收藏 PHP编程网 - PHP站长网 (http://www.52php.cn)- 电商,百科,编程,业界,移动互联,5G,云计算,站长网!
热搜: 专业 娱乐 服务 百度
当前位置: 首页 > 站长百科 > 正文

创建Oracle Package Body

发布时间:2021-01-16 16:10 所属栏目:[站长百科] 来源:网络整理
导读:我正在尝试为包装奠定基础,但即使开始也遇到了麻烦.我已经成功创建了一个基本的包规范,并且只想测试包体,但是我无法编译它.规范代码是: CREATE OR REPLACE PACKAGE synchronize_my_data AS PROCEDURE synchronize_data(p_run_date IN date);END synchroni

我正在尝试为包装奠定基础,但即使开始也遇到了麻烦.我已经成功创建了一个基本的包规范,并且只想测试包体,但是我无法编译它.规范代码是:

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;

这不应该与你得到的任何错误有任何关系.但它应该使您的代码更容易处理.

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

推荐文章
热点阅读