Oracle
 sql >> Baza danych >  >> RDS >> Oracle

pętla for wewnątrz wyroczni kursora

Kursor jest zawsze otwarty na instrukcji SELECT. O ile mi wiadomo, nie ma sposobu, aby otworzyć kursor na FOR pętla.

Wygląda na to, że naprawdę chcesz dynamicznie utworzyć instrukcję SELECT. Proponuję coś takiego:

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;

Powodzenia.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. problem z hibernacją oracle10g

  2. Brakujące wiersze podczas odpytywania tabeli za pomocą Doctrine (Symfony2)

  3. Operator Oracle nie jest równy

  4. Jak sprawdzić, czy zainstalowany klient Oracle jest 32- lub 64-bitowy?

  5. Czy ODP.NET można redystrybuować?