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

Gửi các giá trị được phân tách bằng dấu phẩy tới mệnh đề WHERE trong thủ tục lưu trữ oracle

Lý tưởng nhất là thay vì chuyển vào một chuỗi đơn lẻ bao gồm các giá trị được phân tách bằng dấu phẩy, bạn sẽ chuyển vào một tập hợp. Nếu bạn có một cái gì đó giống như

CREATE TYPE value_tbl AS TABLE OF VARCHAR2(10);

thì bạn có thể chuyển bộ sưu tập đó vào thủ tục của mình và sử dụng nó trong WHERE mệnh đề

CREATE OR REPLACE PROCEDURE procedure_name( p_values IN value_tbl )
AS
  ...
BEGIN
  FOR i IN (SELECT *
              FROM table_name
             WHERE column_name IN (SELECT *
                                     FROM TABLE( p_values )))
  LOOP
    ...
  END LOOP;
END;

Nếu bạn thực sự cần chuyển vào một chuỗi được phân tách bằng dấu phẩy, bạn có thể xác định cùng một loại tập hợp và sau đó phân tích cú pháp chuỗi để điền tập hợp bằng cách sử dụng một cái gì đó như str2tbl củaTom Kyte chức năng . Nhưng điều đó sẽ kém hiệu quả hơn so với việc chuyển qua một bộ sưu tập để bắt đầu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chọn phần tử cụ thể từ một mảng JSON trong kiểu Oracles JSON CLOB

  2. tại sao một mảng liên kết được lập chỉ mục bởi VARCHAR2 không lưu trữ nhiều hơn 9 phần tử

  3. Làm cách nào để lấy năm hiện tại bằng SQL trên Oracle?

  4. Cách loại bỏ tất cả các phiên oracle đang hoạt động và không hoạt động cho người dùng

  5. Excel VBA kết nối với Oracle DB từ xa bằng InstantClient