sql >> Databáze >  >> RDS >> Oracle

smyčka for uvnitř kurzorového orákula

Kurzor je vždy otevřen na příkazu SELECT. Pokud vím, neexistuje způsob, jak otevřít kurzor na FOR smyčka.

Zdá se mi, že opravdu chcete dynamicky vytvořit příkaz SELECT. Navrhuji něco jako následující:

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;

Hodně štěstí.




  1. Jak zkontrolovat, zda pole obsahuje konkrétní řetězec?

  2. Jak rozpoznat textový soubor z mého linuxového počítače přes kód django bez kontroly jeho přípony a také velikosti souboru?

  3. hibernate + mysql + načíst data do souboru

  4. Jaký je rozdíl PL/SQL API mezi Oracle Express Edition (XE) a Standard Edition (SE)?