Mega Code Archive

 
Categories / Oracle PLSQL Tutorial / Function Procedure Packages
 

PLS-00452

SQL> SQL> create table product(   2     product_id number(4)     not null,   3     product_description varchar2(20) not null   4  ); Table created. SQL> SQL> insert into product values (1,'Java'); 1 row created. SQL> insert into product values (2,'Oracle'); 1 row created. SQL> insert into product values (3,'C#'); 1 row created. SQL> insert into product values (4,'Javascript'); 1 row created. SQL> insert into product values (5,'Python'); 1 row created. SQL> SQL> create table company(   2     product_id        number(4)    not null,   3     company_id          NUMBER(8)    not null,   4     company_short_name  varchar2(30) not null,   5     company_long_name   varchar2(60)   6  ); Table created. SQL> insert into company values(1,1001,'A Inc.','Long Name A Inc.'); 1 row created. SQL> insert into company values(1,1002,'B Inc.','Long Name B Inc.'); 1 row created. SQL> insert into company values(1,1003,'C Inc.','Long Name C Inc.'); 1 row created. SQL> insert into company values(2,1004,'D Inc.','Long Name D Inc.'); 1 row created. SQL> insert into company values(2,1005,'E Inc.','Long Name E Inc.'); 1 row created. SQL> insert into company values(2,1006,'F Inc.','Long Name F Inc.'); 1 row created. SQL> SQL> create table product_company(   2     product_id           number(4) not null,   3     product_description  varchar2(20) not null,   4     company_id           NUMBER(8) not null,   5     company_short_name   varchar2(30) not null,   6     company_long_name    varchar2(60)   7  ); Table created. SQL> SQL> CREATE OR REPLACE PACKAGE myPackage   2  IS   3    FUNCTION getName(ip_product_id NUMBER,ip_company_id NUMBER)   4    RETURN VARCHAR2;   5    PRAGMA RESTRICT_REFERENCES(getName,WNDS,WNPS);   6  END myPackage;   7  / Package created. SQL> SQL> show errors No errors. SQL> SQL> CREATE OR REPLACE PACKAGE BODY myPackage   2  IS   3    FUNCTION getName(ip_product_id NUMBER,ip_company_id NUMBER)   4    RETURN VARCHAR2   5    IS   6      v_name VARCHAR2(120);   7      v_product_description VARCHAR2(20);   8      v_company_short_name VARCHAR2(30);   9      v_company_long_name VARCHAR2(60);  10    BEGIN  11      SELECT 'Org Name: (Short) '||company_short_name||' (Long) '||company_long_name  12      INTO v_name  13      FROM company  14      WHERE product_id = ip_product_id  15      AND company_id = ip_company_id;  16      SELECT product_description  17      INTO v_product_description  18      FROM product  19      WHERE product_id = ip_product_id;  20      SELECT company_short_name,company_long_name  21      INTO v_company_short_name,v_company_long_name  22      FROM company  23      WHERE product_id = ip_product_id  24      AND company_id = ip_company_id;  25      INSERT INTO product_company VALUES  26      (ip_product_id,v_product_description,ip_company_id,  27       v_company_short_name,v_company_long_name);  28      RETURN (v_name);  29    END getName;  30  END myPackage;  31  / Warning: Package Body created with compilation errors. SQL> show errors Errors for PACKAGE BODY MYPACKAGE: LINE/COL -------- ERROR ----------------------------------------------------------------- 3/3 PLS-00452: Subprogram 'GETNAME' violates its associated pragma SQL> SQL> drop table company; Table dropped. SQL> SQL> drop table product; Table dropped. SQL> SQL> drop table product_company; Table dropped. SQL>