Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Gửi một mảng giá trị tới thủ tục Oracle để sử dụng trong mệnh đề WHERE IN

Một cách có thể là sử dụng VARRAY cho PARAM_THAT_WILL_BE _USED_INSIDE_WHERE_IN và sử dụng nó như được mô tả ở đây
Tuy nhiên, tôi không chắc về cách gọi nó từ c #.

Một cách khác là sử dụng varchar2 với một csv như bạn đã nêu trong câu hỏi của mình nhưng không có sql động, như sau:

CREATE PROCEDURE MY_TEST_PROC(
  CUR OUT SYS_REFCURSOR,
  PARAM_THAT_WILL_BE varchar2)
AS
BEGIN
  OPEN CUR FOR 
    SELECT * 
      FROM MY_TABLE 
     WHERE COL1 IN (
        select regexp_substr(PARAM_THAT_WILL_BE, '[^,]+',1,level) p
          from dual t
       connect by level <= regexp_count(PARAM_THAT_WILL_BE, ',') + 1
)
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xóa các hàng trùng lặp khỏi bảng trong Oracle

  2. Tại sao tôi không thể tạo trình kích hoạt trên các đối tượng do SYS sở hữu?

  3. Hàm hoặc Thủ tục cho mệnh đề IN

  4. Hàm HEXTORAW () trong Oracle

  5. Tự động tăng trong Oracle mà không cần sử dụng trình kích hoạt