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

Uložená procedura Oracle:vrátí sadu výsledků i parametry out

V Oracle nemůžete spouštět příkazy přímého výběru bez INTO doložka.

Pokud používáte Oracle 12c a vyšší, můžete použít REF CURSOR a DBMS_SQL.RETURN_RESULT

create or replace procedure foo(empId IN NUMBER, maxSalary OUT NUMBER) AS
q SYS_REFCURSOR;
 BEGIN
    OPEN q FOR select * from Employee e where e.id >=empId;
     DBMS_SQL.return_result (q); -- This will display the result
    select max(salary) into maxSalary from Employee;
END;

U předchozích verzí (11g,10g) můžete předat REF CURSOR jako OUT a vytiskněte jej z sqlplus nebo TOAD spuštěním jako skript.

create or replace procedure foo(empId IN NUMBER, maxSalary OUT NUMBER,
   q OUT SYS_REFCURSOR) AS

     BEGIN
        OPEN q FOR select * from Employee e where e.id >=empId;
        select max(salary) into maxSalary from Employee;
    END;

Před voláním procedury definujte proměnné vazby.

VARIABLE v_empID NUMBER
VARIABLE v_maxsalary NUMBER
VARIABLE v_q REFCURSOR

EXEC :v_empID := 101
EXEC foo(:v_empID,:v_maxsalary,:v_q ) 
PRINT v_q -- This will display the result from the query.



  1. Jak získat skript dat SQL Serveru?

  2. Oprava chyby:„SELECTy nalevo a napravo od UNION nemají stejný počet sloupců výsledků“ v SQLite

  3. Jarní podpora JDBC a velká datová sada

  4. Jak přejmenovat klíč JSON v SQL Server (T-SQL)