sql >> Databasteknik >  >> RDS >> Oracle

Returnerar en ref-markör från en Oracle-funktion

Ett par misstag, titta på mitt arbetsexempel, ändrade precis källtabellen:

CREATE OR REPLACE FUNCTION  TEST_CUR RETURN SYS_REFCURSOR
AS
   VAR_REF SYS_REFCURSOR;
BEGIN
    OPEN VAR_REF FOR
        SELECT *
        FROM DUAL;

    RETURN VAR_REF;
END;

Här behöver du inte öppna markören, den är redan öppen.

DECLARE
    L_VAR SYS_REFCURSOR;
    L_STATUS VARCHAR2(10);
BEGIN
    L_VAR:=TEST_CUR;
    LOOP
        FETCH L_VAR INTO L_STATUS;
        EXIT WHEN L_VAR%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE( L_STATUS );
    END LOOP;
    CLOSE L_VAR;
END;

Ett riktigt intressant inlägg som visar hur man testar orakelmarkörer:

5 olika sätt att testa Oracle Ref Cursor-resultat



  1. Hur man genererar ett schema från en CSV för en PostgreSQL-kopia

  2. Är det möjligt att göra N-master => 1-slav replikering med MySQL?

  3. Finns det PHP mysql_real_escape_string för postgresql?

  4. Kan jag återanvända ett uttryck i en MySQL-fråga som en variabel för ett annat fält?