【发布时间】:2016-11-15 12:34:55
【问题描述】:
这是我的代码:
CREATE OR REPLACE PROCEDURE log(repname in varchar2) AS
PACKAGE_NAME VARCHAR2,
START_TIME DATE,
END_TIME DATE,
STATUS;
BEGIN
SELECT PACKAGE_NAME ,PRCS_START_TIME ,PRCS_END_TIME,STATUS
FROM CONTCL_OWNER.PROCESSLOG
WHERE PACKAGE_NAME LIKE REPNAME
ORDER BY PRCS_START_TIME
WHERE ROW_NUMBER <=7;
END;
它给了我这些错误:
错误(2,60):PLS-00103:遇到符号“,”时预期以下之一:=。 ( @ % ; 非空范围默认字符
错误(3,1):PLS-00103:在预期以下之一时遇到符号“BEGIN”:long double ref char time timestamp interval date binary national character nchar
错误(7,26):PLS-00103:在预期以下情况之一时遇到符号“AND”:。 ( , * @ % & - + ; / at for mod 余数 rem asc desc || multiset
【问题讨论】:
-
给出错误信息。
-
您缺少一个
into子句来存储 select 语句的结果。请阅读手册以获取详细信息和示例:docs.oracle.com/database/121/LNPLS/static.htm#LNPLS00603 并且您的变量声明也是错误的,每一行都需要以;结尾。这再次记录在手册中:docs.oracle.com/database/121/LNPLS/fundamentals.htm#LNPLS210 而status变量没有数据类型。 -
你的大写锁定也打开了;)
-
您应该只使用一个
WHERE子句。像这样:WHERE PACKAGE_NAME LIKE REPNAME And ROW_NUMBER <=7