我要調用從包p_name一個過程,但它給了錯誤的標識「NAME」必須聲明爲PL/SQL錯誤:標識符「NAME」必須聲明爲
DECLARE
V V_NAME;
V1 VARCHAR2(30);
v_sql VARCHAR2(4000);
BEGIN
SELECT PROCEDURE_NAME BULK COLLECT INTO V from ALL_PROCEDURES
where OBJECT_NAME='p_name';
FOR I IN 1..V.COUNT LOOP
name:='p_name';
v_sql:='begin'||name||'.'||V(I)||';'||'END;';
EXECUTE IMMEDIATE v_sql;
END LOOP;
END;
您在這裏使用的變量'name' name ='p_name'; v_sql:='begin'|| name ||'。|| || V(I)||';'||'END;';'沒有聲明。 – g00dy
另外'begin'|| name'應該是''begin'|| name',並且你需要指定包的所有者,或者其他一些過濾器來確保'owner.object_name.procedure_name'是一個過程並且不會不需要參數等。我會發佈一個固定版本,但這個代碼有太多問題。 –