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

Plsql 在PL/SQL中编译包时出错。错误(7,1):PLS-00103:遇到符号;创建;,plsql,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 BO

错误(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;
“/”需要单独在一个空行上。 像这样:

CREATE OR REPLACE PACKAGE abc AS
...
END;
/
CREATE OR REPLACE PACKAGE BODY abc AS
...
END;
/
“/”的含义是执行命令缓冲区。在本例中,它执行上一个PL/SQL块

有关此主题的更深入讨论,请参见上的此处

如果您想在SQL Developer的专用对象视图A中操作包vie,您必须将包def和body分开,并在以下两个选项中使用“/”:


首先编译包规范(不带“/”)。然后在一个单独的选项卡页面中用小的包图标(编译图标的左边)打开主体。编辑您的主体代码并在那里编译(同样,没有“/”)。

您是如何运行的?SQLPLUS,SQLDeveloper?我是通过SQL Developer运行的。我在规范和正文两部分都添加了/。但现在的错误是“error(6,1):PLS-00103:遇到符号“/”。当我在SQL Developer中以s脚本的形式运行此代码时,它成功地工作并编译了,但作为包代码它也有相同的错误。但它也应该在这里工作。有什么解决办法吗?当我试图编译整个软件包时,就会出现上述错误。但是当我将此软件包的所有内容复制并粘贴到单独的工作表中时,它被编译了。您如何尝试编译该软件包?请注意:“/”不是包装代码的一部分。它只是告诉前端,如SQLPlus或SQLDeveloper工作表,PL/SQL块在哪里结束。如果你仔细检查实际问题,我试图编译一个没有“/”的包,那么我得到的错误是“error(7,1):PLS-00103:遇到了符号“CREATE”。。然后根据建议,我在创建之前放入“/”,然后我得到的错误是“error(6,1):PLS-00103:遇到符号“/”。因此,我在单独的工作表中用“/”粘贴代码。然后它成功了。但我想编译不带“/”的包。谢谢,这很有帮助。不客气!请。在回答时用绿色复选标记标记答案,这样人们就可以集中精力回答开放性问题。谢谢