Making a function private
449894Jul 14 2009 — edited Jul 15 2009Trying 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>