How to pass values to IN operator dynamically?

后端 未结 1 836
后悔当初
后悔当初 2020-12-21 21:40

I want to create a procedure which accepts an array list for IN operator.

For eg:

Create or Replace Procedure Test (a Arraylist)
{
Select * from tab         


        
相关标签:
1条回答
  • 2020-12-21 21:52

    Create a collection type:

    CREATE TYPE stringlist IS TABLE OF VARCHAR2(100);
    /
    

    Then you can pass it to a procedure and use the MEMBER OF operator (rather than the IN operator):

    CREATE PROCEDURE Test (
      in_list     IN  stringlist,
      out_results OUT SYS_REFCURSOR
    )
    IS
    BEGIN
      OPEN out_results FOR
      SELECT *
      FROM   your_table
      WHERE  your_column MEMBER OF in_list;
    END;
    /
    

    If you are connecting from an external language then you can quite easily pass an array to the procedure (Java example) or you can create the list in PL/SQL or from a delimited list.

    0 讨论(0)
提交回复
热议问题