The PROCEDURE_ADD_PRODUCT is defined within a package specifications as follows: PROCEDURE_ADD_PRODUCT (P_PRODNO NUMBER,P_PRODNAME VARCHER2); Which procedure declaration can’t be added to package specifications?
-
a) PROCEDURE add_product (p_order_date DATE);
-
b) PROCEDURE add_product (p_name VARCHER2, P_ORDERED DATE);
-
c) PROCEDURE add_product (p_prodname VARCHER2, P_PRISE NUMBER);
-
d) PROCEDURE add_product (p_prize NUMBER, P_DESCRIPTION VARCHER2);
In PL/SQL package overloading, you cannot add a procedure with the same name if its parameters differ only in name but have the same data types. Option D uses NUMBER and VARCHAR2, which matches the original signature and causes a conflict.
To determine which procedure declaration can't be added to the package specifications, let's go through each option:
Option A) PROCEDURE add_product (p_order_date DATE); This option is a valid procedure declaration. It takes a parameter "p_order_date" of type DATE.
Option B) PROCEDURE add_product (p_name VARCHER2, P_ORDERED DATE); This option is a valid procedure declaration. It takes two parameters: "p_name" of type VARCHAR2 and "p_ordered" of type DATE.
Option C) PROCEDURE add_product (p_prodname VARCHER2, P_PRISE NUMBER); This option is a valid procedure declaration. It takes two parameters: "p_prodname" of type VARCHAR2 and "p_prise" of type NUMBER.
Option D) PROCEDURE add_product (p_prize NUMBER, P_DESCRIPTION VARCHER2); This option is not a valid procedure declaration. There is a typo in the parameter declaration. Instead of "VARCHAR2", it is written as "VARCHER2".
Therefore, the correct answer is D) PROCEDURE add_product (p_prize NUMBER, P_DESCRIPTION VARCHER2), as it contains an incorrect parameter declaration.