PL SQL 过程错误

Posted

技术标签:

【中文标题】PL SQL 过程错误【英文标题】:PL SQL Procedure error 【发布时间】:2016-05-12 22:02:52 【问题描述】:

我正在创建此过程以从数据库中检索信息。这也是我第一次创建程序。我在创建过程时尝试设置的参数不断出现错误。它说的类似于期待分号所在的不同符号。 现在我的 SQL 语句出现错误,数据类型不一致:预期 NUMBER got DATE

CREATE OR REPLACE PROCEDURE HIREDATE
(
D_ID IN EMP.DEPARTMENT_ID%TYPE; 
H_YEAR IN EMP.HIRE_DATE%TYPE;
)
--
AS
--
v_Last              VARCHAR2(20);               
v_First             VARCHAR2(25);
v_HireDate          DATE;
--
BEGIN
--
SELECT LAST_NAME,FIRST_NAME,HIRE_DATE 
INTO v_Last,v_First,v_HireDate
FROM EMP WHERE DEPARTMENT_ID = D_ID
AND EXTRACT(YEAR FROM HIRE_DATE) = H_YEAR;
--
DBMS_OUTPUT.PUTLINE(v_Last||','||v_First||'      '||v_HireDate);
--
EXCEPTION
--
WHEN NO_DATA_FOUND THEN 
DBMS_OUTPUT.PUTLINE('No data found for Department '||D_ID);
--
WHEN OTHERS THEN
DBMS_OUTPUT.PUTLINE('An unexpected error has occurred!');
--
END;

【问题讨论】:

您不要在参数定义中使用分号。逗号。 【参考方案1】:

您的参数应该用逗号 (,) 分隔。你有分号。

CREATE OR REPLACE PROCEDURE HIREDATE(
 D_ID IN EMP.DEPARTMENT_ID%TYPE,
 H_YEAR IN EMP.HIRE_DATE%TYPE) AS ...

【讨论】:

以上是关于PL SQL 过程错误的主要内容,如果未能解决你的问题,请参考以下文章

PL/SQL 存储过程错误

ORACLE APEX PL SQL 过程错误

PL SQL 过程错误

编译过程时 PL/SQL 工具包 Web 应用程序错误

错误:无法在 PL/SQL 中使用选择创建过程

PL/SQL: SQL 语句被忽略 - 创建一个过程得到编译错误