oracle 利用PL/SQL创建一个存储过程proc_AddWage,给scott用户下emp表中每个工资低于3500工资的人涨工资500块,报错,求解答

Ivan_梦方舟 2016-07-29 09:57:41
利用PL/SQL创建一个存储过程proc_AddWage,给scott用户下emp表中每个工资低于3500工资的人涨工资500块,总是报错,
看不出错误在哪里,我是初学者,请求各位大侠们赐教!!!谢谢

下面是我写的代码的图片

另外还有一个问题,就是利用 exec 去调用这个存储过程时候显示“无效的sql语句” 是怎么回事?

...全文
604 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ivan_梦方舟 2016-07-29
  • 打赏
  • 举报
回复
谢谢版主,谢谢@ghx287524027 大神,我的问题已经解决了,麻烦你们了,
卖水果的net 2016-07-29
  • 打赏
  • 举报
回复
引用 9 楼 u014270696 的回复:
截图里圈记的那一行代码中的赋值号不应该是 := 吗?
嗯的 给变量赋值时用 := ,update 时直接 = ;
Ivan_梦方舟 2016-07-29
  • 打赏
  • 举报
回复
截图里圈记的那一行代码中的赋值号不应该是 := 吗?
Ivan_梦方舟 2016-07-29
  • 打赏
  • 举报
回复
引用 4 楼 ghx287524027 的回复:
代码结构不对,应该是:
declare
声明变量
begin
代码
end;

你截图中的代码是不可能放到一起执行的,肯定会报错


额。。。刚才已经把declare 部分放置到了begin 前面了,但是还是会报错,创建存储过程和调用是分开进行的,没有一起执行


卖水果的net 2016-07-29
  • 打赏
  • 举报
回复
--存储过程如下:
-- 借 5 楼
create or replace procedure pro_AddWage as
i number:=0;
begin
	select count(*) into i from scott.emp e where e.sal<3500;
	if i>0 then
		update scott.emp e set e.sal=e.sal+500 where e.sal<3500;
		commit;
	end if;
end;
/   -- 创建完成后, 要加这个

--调用:
begin 
	pro_AddWage;
end;
	
丶小飞哥 2016-07-29
  • 打赏
  • 举报
回复
你这个loop循环有什么意义呢
ghx287524027 2016-07-29
  • 打赏
  • 举报
回复
--存储过程如下:
create or replace procedure pro_AddWage as
i number:=0;
begin
	select count(*) into i from scott.emp e where e.sal<3500;
	if i>0 then
		update scott.emp e set e.sal=e.sal+500 where e.sal<3500;
		commit;
	end if;
end;


--调用:
begin 
	pro_AddWage;
end;
	
ghx287524027 2016-07-29
  • 打赏
  • 举报
回复
代码结构不对,应该是: declare 声明变量 begin 代码 end; 你截图中的代码是不可能放到一起执行的,肯定会报错
Ivan_梦方舟 2016-07-29
  • 打赏
  • 举报
回复
调用这个存储过程还是会报错
,

ghx287524027 2016-07-29
  • 打赏
  • 举报
回复
if exist() 这是 mysql 的写法,oracle 中没有这种写法。按 1# 那么改就行,另外,update 之后要记得commit;
卖水果的net 2016-07-29
  • 打赏
  • 举报
回复
if exists() then 改成 select count(*) into x from .... if x > 0 then

17,086

社区成员

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

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