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

vòng lặp for bên trong một tiên tri con trỏ

Một con trỏ luôn được mở trên một câu lệnh SELECT. Theo như tôi biết thì không có cách nào để mở con trỏ trên FOR vòng.

Đối với tôi, có vẻ như bạn thực sự muốn tạo một câu lệnh SELECT động. Tôi đề xuất một cái gì đó như sau:

PROCEDURE p_get_xxx(p_id IN VARCHAR2, p_cur_result OUT SYSREFCURSOR)
AS
  l_array schema_name.t_array;
  strSelect_statement  VARCHAR2(4000);
BEGIN
  l_array := split_string(p_id);

  -- Set up the basics of the SELECT statement

  strSelect_statement := 'SELECT * FROM SOME_TABLE WHERE ID IN (';

  FOR i IN l_array.FIRST..l_array.LAST LOOP
    strSelect_statement := strSelect_statement ||
                             '''' || l_array(i) || ''',';
  END LOOP;

  -- Get rid of the unwanted trailing comma

  strSelect_statement := SUBSTR(strSelect_statement, 1,
                                  LENGTH(strSelect_statement)-1);

  -- Add a right parentheses to close the IN list

  strSelect_statement := strSelect_statement || ')';

  -- Open the cursor

  OPEN p_cur_result FOR strSelect_statement;
END p_get_xxx;

Chúc may mắn.




  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ần gỡ bỏ Oracle Favicon

  2. Mệnh đề 'Trong' trong máy chủ SQL có nhiều cột

  3. Giải nén Oracle từ giá trị cắt xml

  4. Hiển thị chuỗi từ raise_application_error trong chương trình java

  5. Bác sĩ lập lịch thiết kế cơ sở dữ liệu