【问题标题】:Can't create procedure and function in sql plus oracle无法在sql plus oracle中创建过程和函数
【发布时间】:2017-11-10 13:20:26
【问题描述】:

无法在 pl/sql 中创建任何过程/函数。总是创建带有编译错误的过程。最后尝试以下代码

SQL>  CREATE OR REPLACE PROCEDURE REPORT(NAME VARCHAR2, VERSION VARCHAR2,
  2     STARTDATE DATE, ENDDATE DATE) AS 
  3   BEGIN 
  4   END REPORT;
  5   /

Warning: Procedure created with compilation errors.

SQL> show error procedure report;
Errors for PROCEDURE REPORT:

LINE/COL ERROR
-------- -----------------------------------------------------------------
4/2      PLS-00103: Encountered the symbol "END" when expecting one of the
         following:
         begin case declare exit for goto if loop mod null pragma
         raise return select update while with <an identifier>
         <a double-quoted delimited-identifier> <a bind variable> <<
         close current delete fetch lock insert open rollback
         savepoint set sql execute commit forall merge pipe 

功能

CREATE OR REPLACE FUNCTION GETEMPSALARY (EMPNUMBER IN INTEGER) RETURN INTEGER
IS
DECLARE
EMPSALARY INTEGER;
BEGIN
SELECT SAL INTO EMPSALARY FROM EMP WHERE EMP.EMPNO = EMPNUMBER;
RETURN EMPSALARY;
END GETEMPSALARY;
/

有什么建议吗?

【问题讨论】:

  • 顺便说一句 - 您的程序正在创建中。在您修复错误之前,它无法执行。
  • 你能找出错误在哪里吗?在程序中发现了错误,但是函数呢
  • 在你的函数中取出 DECLARE

标签: oracle stored-procedures plsql procedure plsqldeveloper


【解决方案1】:

您的过程没有语句。至少放一个 NULL 语句让它编译:

CREATE OR REPLACE PROCEDURE REPORT(NAME VARCHAR2, VERSION VARCHAR2,
      STARTDATE DATE, ENDDATE DATE) AS 
BEGIN 
  NULL;
END REPORT;

【讨论】:

  • 函数怎么样
  • 嗯,当我回答有关程序的问题时,该功能不存在。请更新问题以显示该函数给您带来的错误。
  • 是的..你能帮忙吗?
  • 你不需要 DECLARE 关键字,但以后你应该发布错误是什么!
  • 非常感谢..完美运行..作为初学者,您的帮助很大..再次感谢加票..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-18
  • 2021-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多