在PL / SQL中编译软件包时出错。错误(7,1):PLS-00103:遇到符号“创建”

时间:2018-07-03 09:27:35

标签: plsql

  

错误(7,1):PLS-00103:遇到符号“创建”。我试图把   /,然后创建但错误为错误(6,1):PLS-00103:遇到   符号“ /”。

我是PL / SQL编程的新手,请提供帮助。

CREATE OR REPLACE PACKAGE EMP_BULK_INSERT AS 

     PROCEDURE Bulk_Insert;

    END EMP_BULK_INSERT;
    /* package body */
    CREATE OR REPLACE PACKAGE BODY EMP_BULK_INSERT AS

      PROCEDURE Bulk_Insert
      AS
         /* select all records from source table */
          CURSOR kt_test_cur IS
            SELECT empid
            ,      empband
            ,      empname
            ,      workexp
            ,      salary
            from   kt_test;

            /* create nested table type and variable that will hold BIG_TABLE's records */
            TYPE kt_test_ntt IS TABLE OF kt_test_cur%ROWTYPE;
            l_kt_test kt_test_ntt;
       BEGIN
            /* open pointer to SELECT statement */
            OPEN kt_test_cur;
            /* collect data in the collection */
            FETCH kt_test_cur BULK COLLECT INTO l_kt_test;
            /* close the pointer */
            CLOSE kt_test_cur;

           /* print size of the collection */
           DBMS_OUTPUT.PUT_LINE('Nested table holds: ' || TO_CHAR(l_kt_test.COUNT) || ' records.');

            /* write data down to target table */
            FORALL indx IN l_kt_test.FIRST..l_kt_test.LAST
                INSERT INTO kt1_test(empid,empband,empname,workexp,salary)
                VALUES (l_kt_test(indx).empid,l_kt_test(indx).empband,l_kt_test(indx).empname,l_kt_test(indx).workexp,l_kt_test(indx).salary);

             DBMS_OUTPUT.PUT_LINE('Number of rows inserted ' || SQL%ROWCOUNT || ' rows');

             COMMIT;

        END Bulk_Insert;

    END EMP_BULK_INSERT;

2 个答案:

答案 0 :(得分:1)

“ /”必须完全空白。 像这样:

CREATE OR REPLACE PACKAGE abc AS
...
END;
/
CREATE OR REPLACE PACKAGE BODY abc AS
...
END;
/

“ /”的含义是执行命令缓冲区。在这种情况下,它将执行上一个PL / SQL块。

有关此主题的更深入讨论,请参见 stack overflow

答案 1 :(得分:0)

如果要通过SQL Developer的专用对象视图来操作程序包,则必须将程序包def和body分开,并在两者中均不使用“ /”:

首先编译程序包规格(不带“ /”)。然后,在带有小包装图标(在编译图标左侧)的单独标签页中打开主体。编辑您的身体代码并在那里编译(同样,不带“ /”)。