存储过程

曲永腾 2014-05-14 04:25:36
CREATE OR REPLACE PROCEDURE CHANGE_SALARY(P_EMPNO IN NUMBER DEFAULT 7788,P_RAISE NUMBER DEFAULT 10)
AS
V_ENAME VARCHAR2(10)
V_SAL NUMBER(5);

BEGIN
SELECT ENAME,SAL INTO V_ENAME,V_SAL FROM EMP WHERE EMPNO=P_ENAME;
UPDATE EMP SET SAL=SAL+P_RAISE WHERE EMPNO=P_EMPNO;
DBMS_OUTPUT.PUT_LINE('雇员'‖V_ENAME‖'的工资被改为'‖TO_CHAR(V_SAL+P_RAISE));
COMMIT;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生错误,修改失败!');
ROLLBACK;
END;
以上是程序,下面报错,请问怎么修改错误???
Compilation errors for PROCEDURE SCOTT.CHANGE_SALARY

Error: PLS-00103: 出现符号 "V_SAL"在需要下列之一时:
:= ; not null default
character
符号 ";" 被替换为 "V_SAL" 后继续。
Line: 4
Text: V_SAL NUMBER(5);

Error: PLS-00103: 出现符号 "‖"在需要下列之一时:
. ( ) , * @ % & | = - + < /
> at in is mod not range rem => .. <an exponent (**)>
<> or != or ~= >= <= <> and or like as between from using ||
Line: 8
Text: DBMS_OUTPUT.PUT_LINE('雇员'‖V_ENAME‖'的工资被改为'‖TO_CHAR(V_SAL+P_RAISE));
...全文
299 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
senv123 2014-05-19
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE CHANGE_SALARY(P_EMPNO IN NUMBER DEFAULT 7788,P_RAISE NUMBER DEFAULT 10) AS V_ENAME VARCHAR2(10); V_SAL NUMBER(5); BEGIN SELECT ENAME,SAL INTO V_ENAME,V_SAL FROM EMP WHERE EMPNO=P_EMPNO; UPDATE EMP SET SAL=SAL+P_RAISE WHERE EMPNO=P_EMPNO; DBMS_OUTPUT.PUT_LINE('雇员'||V_ENAME||'的工资被改为'||TO_CHAR(V_SAL+P_RAISE)); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('发生错误,修改失败!'); ROLLBACK; END; 楼主请你注意你的符号啊,不要输入中文符号,这个可以编译成功
陈字文 2014-05-14
  • 打赏
  • 举报
回复
引用 楼主 u014649087 的回复:
CREATE OR REPLACE PROCEDURE CHANGE_SALARY(P_EMPNO IN NUMBER DEFAULT 7788,P_RAISE NUMBER DEFAULT 10) AS V_ENAME VARCHAR2(10) V_SAL NUMBER(5); BEGIN SELECT ENAME,SAL INTO V_ENAME,V_SAL FROM EMP WHERE EMPNO=P_ENAME; UPDATE EMP SET SAL=SAL+P_RAISE WHERE EMPNO=P_EMPNO; DBMS_OUTPUT.PUT_LINE('雇员'‖V_ENAME‖'的工资被改为'‖TO_CHAR(V_SAL+P_RAISE)); COMMIT; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('发生错误,修改失败!'); ROLLBACK; END; 以上是程序,下面报错,请问怎么修改错误??? Compilation errors for PROCEDURE SCOTT.CHANGE_SALARY Error: PLS-00103: 出现符号 "V_SAL"在需要下列之一时: := ; not null default character 符号 ";" 被替换为 "V_SAL" 后继续。 Line: 4 Text: V_SAL NUMBER(5); Error: PLS-00103: 出现符号 "‖"在需要下列之一时: . ( ) , * @ % & | = - + < / > at in is mod not range rem => .. <an exponent (**)> <> or != or ~= >= <= <> and or like as between from using || Line: 8 Text: DBMS_OUTPUT.PUT_LINE('雇员'‖V_ENAME‖'的工资被改为'‖TO_CHAR(V_SAL+P_RAISE));
在PL/SQL或者是Oracle的SQL里面,相加不能使用 + 应该使用 || UPDATE EMP SET SAL=SAL+P_RAISE WHERE EMPNO=P_EMPNO; 修改为 UPDATE EMP SET SAL=SAL || P_RAISE WHERE EMPNO = P_EMPNO; 其他类似.
曲永腾 2014-05-14
  • 打赏
  • 举报
回复
是啊,这是sql实例,我在sql里面做了一下,就报错了
發糞塗牆 2014-05-14
  • 打赏
  • 举报
回复
你这不是sqlserver的语法。

17,134

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧