我如何解决错误以在Oracle中分配变量值

时间:2019-02-22 01:46:47

标签: oracle

尝试创建显示数据的过程时出现错误 这是错误:

  

PLS-00103:预期以下情况之一时遇到符号“(”:    :=。 ),@%默认字符    符号“:=”代替“(”继续。

这是我的代码:

CREATE OR REPLACE PROCEDURE spemp94_display(
p_hireyear VARCHAR2(4),
c_emp94 OUT SYS_REFCURSOR)
IS
BEGIN
p_hireyear := '1994';
OPEN c_emp94 FOR
    SELECT last_name, hire_date
    FROM employees
    WHERE TO_CHAR(hire_date, 'yyyy') = p_hireyear;
END;

1 个答案:

答案 0 :(得分:1)

该参数定义中有错误

p_hireyear VARCHAR2(4)

在定义过程参数时,不允许定义变量的大小。

只需将其更改为

p_hireyear VARCHAR2

此外,由于p_hireyear是一个IN参数(如果未明确指定INOUT则为默认值),因此您无法为其分配值。 / p>

您会收到

  

PLS-00363:表达式'P_HIREYEAR'不能用作赋值   目标

它应该在传递过程参数时分配。

declare cur SYS_REFCURSOR;
BEGIN
 spemp94_display('1994',cur); -- specify the value here not inside the procedure.
END;
/