我是PLSQL的新手,并使用Bulk SQL进行了一些练习。 我有以下包裹:
/*Update a commision with a new factor*/
FUNCTION commision_pct_update(p_job_id jobs.job_id%type, p_factor NUMBER) RETURN NUMBER;
以及下列机构:
FUNCTION commision_pct_update(p_job_id jobs.job_id%type, p_factor NUMBER) RETURN NUMBER AS
BEGIN
SELECT job_id BULK COLLECT INTO v_employees_tab FROM employees;
FORALL i IN v_employees_tab.FIRST..v_employees_tab.LAST
UPDATE employees SET commission_pct = (commission_pct * p_factor)
WHERE commission_pct is not null AND job_id = p_job_id;
RETURN SQL%ROWCOUNT;
END commision_pct_update;
我的消息日志中收到以下错误。 (我使用的是Oracle SQL Developer)。
错误(43,47):PLS-00201:标识符' V_EMPLOYEES_TAB'必须声明
我不知道在函数中声明标识符的位置或方式。
编辑:
答案 0 :(得分:1)
您需要在v_employees_tab
之前定义变量(BEGIN
),并指明其类型...例如:
FUNCTION commision_pct_update(p_job_id jobs.job_id%type, p_factor NUMBER) RETURN NUMBER AS
TYPE employees_type IS TABLE OF employees%ROWTYPE INDEX BY PLS_INTEGER;
v_employees_tab employees_type;
BEGIN
[...]
这是一个示例类型的课程,选择正确的