Skip to Main Content

SQL & PL/SQL

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!

Making a function private

449894Jul 14 2009 — edited Jul 15 2009
Trying to adjust a function in a package to make it private. And then adjust the procedure to utilize the function to display the results of the function
I seem to be going in circles HELP!!!
Thanks
Mat


This is the original Package


CREATE OR REPLACE PACKAGE order_info_pkg IS
FUNCTION ship_name_pf
(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;
/



And this is my adjusted one with the returned errors


CREATE OR REPLACE PACKAGE order_info_pkg IS
PROCEDURE basket_info_pp
(p_basket IN NUMBER,
p_shop OUT NUMBER,
p_date OUT DATE,
p_shipname OUT VARCHAR2);
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(35);
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,
p_shipname OUT VARCHAR2)
IS
BEGIN
SELECT idshopper, dtordered, ship_name_pf(p_basket)
INTO p_shop, p_date, p_shipname
FROM bb_basket
WHERE idbasket = p_basket;
DBMS_OUTPUT.PUT_LINE(p_basket||' '||p_shop||' '||p_date||' '||p_shipname);
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('Invalid basket id');
END basket_info_pp;
END;
/

Errors for PACKAGE BODY ORDER_INFO_PKG:

LINE/COL ERROR
-------- -------------------------------------------------------------
24/4 PL/SQL: SQL Statement ignored
24/33 PLS-00231: function 'SHIP_NAME_PF' may not be used in SQL
24/33 PL/SQL: ORA-00904: : invalid identifier
SQL>
This post has been answered by Rod West on Jul 14 2009
Jump to Answer
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Aug 12 2009
Added on Jul 14 2009
9 comments
5,458 views