当第一个参数设置了默认值时,如何在打开游标时直接指定第二个参数

how to directly specify second parameter while opening a cursor when first parameter has a default value set

我遇到过这种情况,我为游标的第一个参数提供了一个默认值,并简单地声明了第二个参数,如代码片段所示。 我想在打开游标时跳过输入第一个参数值,只传递第二个参数的值。 有什么办法吗? 如果我只输入逗号和第二个参数值或只输入第二个参数值,我会出错。

 SET SERVEROUTPUT ON;
    DECLARE 
        VEID TMP_EMPLOYEES.NAME%TYPE;
        CURSOR CURF(VID VARCHAR2:=5,vname varchar2) IS--default value set
        SELECT NAME FROM TMP_EMPLOYEES
        WHERE ID<VID and name like'%'||vname||'%';
    BEGIN 
        OPEN CURF('4','ra');-- I just want to pass 'ra'
        LOOP
        FETCH CURF INTO VEID;

        EXIT WHEN CURF%NOTFOUND;
        DBMS_OUTPUT.PUT_LINE(VEID);
        END LOOP;
        CLOSE CURF;
        DBMS_OUTPUT.PUT_LINE('DONE');
    END;  

使用命名符号,您可以明确将哪些参数传递给您正在调用的 cursor/procedure/function。

以下调用会产生相同的结果:

CURF('4', 'ra')
CURF(vid => '4', vname => 'ra')
CURF(vname => 'ra', vid => '4') -- Order of named arguments don't matter
CURF('4', vname => 'ra') -- Mixing ordered and named arguments

通过使用命名符号,您可以省略具有默认值的参数,即 CURF(vname => 'ra') 将给出想要的结果