I got a question on handling parameter list (String with Comma Separated values from Java), nothing but table type parameter in Oracle.
Here is the question:
Hi,How can I create an Oracle stored procedure which accepts a variable number of parameter values used to feed a IN clause?This is what I am trying to achieve.FUNCTIONEXECUTE_UPDATE ( value IN int)RETURN int ISBEGIN [...other statements...]Select * from table1 where id in ()RETURN SQL%ROWCOUNT ;END;We get the parameter_list from javae.g., parameter_list = "’A’,’B’,’C’,’D’";We need a solution which does not uses any temporary table for achieving this.
And here is my suggestion:
Hi,
Check the below piece of code. It may help you.
Table:
CREATE TABLE available_products (product VARCHAR2 (100));
Type:
CREATE OR REPLACE TYPE products_list AS TABLE OF VARCHAR2 (100);
Data:
INSERT INTO available_products VALUES ('A');
INSERT INTO available_products VALUES ('B');
INSERT INTO available_products VALUES ('C');
INSERT INTO available_products VALUES ('D');
Function:
CREATE OR REPLACE FUNCTION check_availability (products IN products_list)
RETURN NUMBER AS
l_count NUMBER;
BEGIN
SELECT COUNT (1) INTO l_count FROM available_products WHERE product IN (SELECT COLUMN_VALUE FROM TABLE (products));
RETURN l_count;
END check_availability;
PL/SQL Block:
BEGIN
DBMS_OUTPUT.put_line ( 'count:' || check_availability (products_list ('B', 'C')) );
END;
Output:
count:2
No comments:
Post a Comment