这个包有什么问题,因为它给出了一个错误?
CREATE OR REPLACE PACKAGE PKG_SHOW_CUST_DETAILS
AS
PROCEDURE SHOW_CUST_DETAILS( myArg VARCHAR2);
END PKG_SHOW_CUST_DETAILS;
CREATE OR REPLACE PACKAGE BODY PKG_SHOW_CUST_DETAILS
AS
PROCEDURE SHOW_CUST_DETAILS(myArg VARCHAR2)
IS
BEGIN
DBMS_OUTPUT.PUT_LINE(myArg);
END SHOW_CUST_DETAILS;
END PKG_SHOW_CUST_DETAILS;
/
字符串
在编译上述脚本时,我得到以下错误:
SQL> show errors
Errors for PACKAGE PKG_SHOW_CUST_DETAILS:
LINE/COL ERROR
-------- -----------------------------------------------------------------
6/1 PLS-00103: Encountered the symbol "CREATE"
型
该软件包非常简单,我无法编译它。我搜索了这个错误消息的早期答案,没有一个解决了我的问题。我一直得到这个错误2更多的软件包,我坚持这个错误消息,无论我做什么。我甚至试图剥离一切到最低限度,如上所示,但是错误消息似乎并没有消失。顺便说一句,我在登录到我的Oracle 11 G数据库后,正在命令行SQL Plus会话上执行这个。是的- SET SERVEROUTPUT ON --被执行,错误消息与这个命令无关。
我错过了什么?
4条答案
按热度按时间92dk7w1h1#
第5行缺少一个
/
。对于
;
和/
here之间的差异,有一个很好的答案。基本上,当通过脚本运行
CREATE
块时,需要使用/
让SQLPlus知道该块何时结束,因为PL/SQL块可以包含许多;
的示例。Further reference第一个字符
SQLPlus处理PL/SQL子程序的方式与处理SQL命令的方式相同,只是分号(;)或空行不会终止和执行块。通过在新行中单独输入句点(.)来终止PL/SQL子程序。也可以通过在新行中单独输入斜杠(/)来终止和执行PL/SQL子程序。
。。
SQLPlus会将您输入的子程序储存在SQL缓冲区中。请使用RUN或斜扛(/)命令来执行目前的子程序。分号(;)会被视为PL/SQL子程序的一部分,不会执行命令。
cx6n0qe32#
对我来说/不得不在一个新的行。
例如
第一个月
不起作用
但
create type emp_t;
个/
个成功了
fv2wmkja3#
在我的例子中,
EXECUTE IMMEDIATE ('CREATE TABLE ...')
工作,例如:字符串
参考Create Table As within PL/SQL?
3ks5zfa04#
分别运行包声明和包体。