这个包有什么问题,因为它出错了?
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个包收到此错误,无论我做什么,我都会遇到此错误消息。我甚至尝试将所有内容剥离到最小的最小值,如上所示,但错误消息似乎没有消失。 BTW我在登录Oracle 11G数据库后在命令行SQL plus会话上执行此操作。 是 - SET SERVEROUTPUT ON - 执行,错误消息与此命令无关。
我错过了什么?
答案 0 :(得分:45)
答案 1 :(得分:1)
对我来说/必须换行。
例如
create type emp_t;/
没用
但是
create type emp_t;
/
工作。
答案 2 :(得分:0)
就我而言,EXECUTE IMMEDIATE ('CREATE TABLE ...')
有效,例如:
DECLARE
myVar INT;
BEGIN
SELECT 2 INTO myVar FROM dual;
IF myVar > 1 THEN
EXECUTE IMMEDIATE('Create Global Temporary Table TestTemp ( id VARCHAR2(2) ) ON COMMIT PRESERVE ROWS');
END IF;
END;
答案 3 :(得分:-3)
分别运行包声明和正文。