错误(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;
答案 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分开,并在两者中均不使用“ /”:
首先编译程序包规格(不带“ /”)。然后,在带有小包装图标(在编译图标左侧)的单独标签页中打开主体。编辑您的身体代码并在那里编译(同样,不带“ /”)。