创建插入雇员的存储过程INSERT_EMP,并将雇员编号等作为参数。
CREATE OR REPLACE PROCEDURE INSERT_EMP(P_EMPNO IN NUMBER DEFAULT 7788,V_SAL NUMBER DEFAULT 1000)
BEGIN
insert into emp(ENAME,SAL) values(P_EMPNO,V_SAL) ;
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO|'已插入到表中');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;
程序提示:
警告: 创建的过程带有编译错误。
CREATE OR REPLACE PROCEDURE INSERT_EMP(P_EMPNO IN NUMBER DEFAULT 7788,V_SAL NUMBER DEFAULT 1000)
BEGIN
insert into emp(ENAME,SAL) values(P_EMPNO,V_SAL) ;
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO|'已插入到表中');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;
程序提示:
警告: 创建的过程带有编译错误。
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 20
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300 30
7521 WARD SALESMAN 7698 22-2月 -81 1250 500 30
7566 JONES MANAGER 7839 02-4月 -81 2975 20
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400 30
7698 BLAKE MANAGER 7839 01-5月 -81 2850 30
7782 CLARK MANAGER 7839 09-6月 -81 2450 10
7788 SCOTT ANALYST 7566 24-1月 -87 3090 20
7839 KING PRESIDENT 17-11月-81 5000 10
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0 30
7876 ADAMS CLERK 7788 02-4月 -87 1100 20
7900 JAMES CLERK 7698 03-12月-81 950 30
7902 FORD ANALYST 7566 03-12月-81 3000 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10已选择14行。
CREATE OR REPLACE PROCEDURE
INSERT_EMP(P_EMPNO IN NUMBER DEFAULT 7788,V_SAL IN NUMBER DEFAULT 1000)
as--错误1 你少了as
BEGIN
insert into emp(EMPNO,SAL) values (P_EMPNO,V_SAL);
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO||'已插入到表中');
--错误2 你的P_EMPNO|'已插入到表中' 少了|
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;
CREATE OR REPLACE PROCEDURE INSERT_EMP(P_EMPNO IN NUMBER DEFAULT 7788,V_SAL NUMBER DEFAULT 1000)
IS --少了is or as
BEGIN
insert into emp(ENAME,SAL) values(P_EMPNO,V_SAL) ;
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO||'已插入到表中'); --这里少了一个| Oracle中的连接号是||
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;EXEC INSERT_EMP;13 PL/SQL block, executed in 0.078 sec.
发生错误,插入失败!
Total execution time 0.078 sec.
as---or is 少了这个
BEGIN
insert into emp(ENAME,SAL) values(P_EMPNO,V_SAL) ;
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO|'已插入到表中');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;
as---or is 少了这个
BEGIN
insert into emp(ENAME,SAL) values(P_EMPNO,V_SAL) ;
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO||'已插入到表中'); --抒写的时候漏了吧
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;
CREATE OR REPLACE PROCEDURE INSERT_EMP(P_EMPNO IN NUMBER DEFAULT 7788,V_SAL NUMBER DEFAULT 100) CREATE OR REPLACE PROCEDURE INSERT_EMP(P_EMPNO IN NUMBER DEFAULT 7788,V_SAL NUMBER DEFAULT 1000)
IS
BEGIN
insert into emp(ENPNO,SAL) values(P_EMPNO,V_SAL) ;
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO||'已插入到表中');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;--EXEC INSERT_EMP;
警告: 创建的过程带有编译错误。
警告: 创建的过程带有编译错误。PROCEDURE INSERT_EMP 出现错误:LINE/COL ERROR
-------- -----------------------------------------------------------------
1/2158 PLS-00103: 出现符号 "CREATE"在需要下列之一时:
; is with authid as
cluster order using external deterministic parallel_enable
pipelined
CREATE OR REPLACE PROCEDURE INSERT_EMP(P_EMPNO IN NUMBER DEFAULT 7788,V_SAL NUMBER DEFAULT 100)
IS
BEGIN
insert into emp(EMPNO,SAL) values(P_EMPNO,V_SAL) ;
DBMS_OUTPUT.PUT_LINE('雇员'||P_EMPNO||'已插入到表中');
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,插入失败!');
ROLLBACK;
END;你原来代码中is后面还有一行代码。