Skip to Main Content

Oracle Database Discussions

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

procedure must be declared error

953957Aug 6 2012 — edited Aug 6 2012
I am trying to create an anonymous block that will invoke both the packaged procedure and function in the package to test, using basket id 12.
Package
CREATE OR REPLACE PACKAGE order_info_pkg IS
 FUNCTION C  
   (p_basket IN NUMBER)
   RETURN VARCHAR2;
 PROCEDURE basket_info_pp
  (p_basket IN NUMBER,
   p_shop OUT NUMBER,
   p_date OUT DATE);
END;
/
CREATE OR REPLACE PACKAGE BODY order_info_pkg IS
 FUNCTION SHIP_NAME_PF  
   (p_basket IN NUMBER)
   RETURN VARCHAR2
  IS
   lv_name_txt VARCHAR2(25);
 BEGIN
  SELECT shipfirstname||' '||shiplastname
   INTO lv_name_txt
   FROM bb_basket
   WHERE idBasket = p_basket;
  RETURN lv_name_txt;
 EXCEPTION
   WHEN NO_DATA_FOUND THEN
     DBMS_OUTPUT.PUT_LINE('Invalid basket id');
 END ship_name_pf;
 PROCEDURE basket_info_pp
  (p_basket IN NUMBER,
   p_shop OUT NUMBER,
   p_date OUT DATE)
  IS
 BEGIN
   SELECT idshopper, dtordered
    INTO p_shop, p_date
    FROM bb_basket
    WHERE idbasket = p_basket;
 EXCEPTION
   WHEN NO_DATA_FOUND THEN
     DBMS_OUTPUT.PUT_LINE('Invalid basket id');
 END basket_info_pp;
END;
/
Anonymous black:
VARIABLE G_IDSHOPPER NUMBER;
VARIABLE G_DATE VARCHAR2(20);
DECLARE
  LV_TEXT	VARCHAR2(50);
  LV_IDSHOPPER	NUMBER;
  LV_DATE	DATE;
BEGIN
  LV_TEXT := ORDER_INFO_PKG.BASKET_INFO_PP(12, LV_IDSHOPPER, LV_DATE);
  DBMS_OUTPUT.PUT_LINE(LV_TEXT);
End;
/
Getting:
ERROR at line 6:
ORA-06550: line 6, column 14:
PLS-00201: identifier 'BASKET_INFO_PP' must be declared
ORA-06550: line 6, column 3:
PL/SQL: Statement ignored

Can anyone assist?

I have also tried this statement to test and could not get it even close to working.
VARIABLE G_SHOP NUMBER;
VARIABLE G_DATE DATE;
VARIABLE G_NAME VARCHAR2(30);

DECLARE
  LV_ORDERNAME VARCHAR2(30);
BEGIN
SELECT TO_CHAR(DTORDERED)
  INTO :G_DATE
   FROM BB_BASKET
    WHERE IDBASKET = P_BASKET;
SELECT ORDER_INFO_PKG.BASKET_INFO_PP(12, :G_SHOP, :G_DATE)
  INTO LV_ORDERNAME
   FROM BB_BASKET
    WHERE  IDBASKET = P_BASKET;
DBMS_OUTPUT.PUT_LINE(LV_ORDERNAME, :G_SHOP, :G_DATE);
END;
/
ERROR at line 7:
ORA-06550: line 7, column 22:
PL/SQL: ORA-00904: "P_BASKET": invalid identifier
ORA-06550: line 4, column 1:
PL/SQL: SQL Statement ignored
ORA-06550: line 8, column 23:
PL/SQL: ORA-00904: : invalid identifier
ORA-06550: line 8, column 1:
PL/SQL: SQL Statement ignored
ORA-06550: line 12, column 1:
PLS-00306: wrong number or types of arguments in call to 'PUT_LINE'
ORA-06550: line 12, column 1:
PL/SQL: Statement ignored

Edited by: user13842802 on Aug 6, 2012 5:53 PM
This post has been answered by JustinCave on Aug 6 2012
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Sep 3 2012
Added on Aug 6 2012
14 comments
20,497 views