在oracle要写这样一个存储过程,不知为什么老是报错,求解答?

createorreplaceprocedurepriceplanpro(nstartinnumber,noidinnumber,planinnumber)asbegin... create or replace procedure priceplanpro
(nstart in number,noid in number,plan in number)
as
begin
if nstart > 0 then
update priceplan r inner join ductprice p on r.ncorp=p.ncorp
set p.nprice= plan where noid = noid and start=nstart and nsta = 2021;
end if;
exception
when no_data_found then
dbms_output.put_line('数据不存在!');
end priceplanpro;
展开
 我来答
tj_angela
2014-12-22 · TA获得超过7530个赞
知道大有可为答主
回答量:6797
采纳率:75%
帮助的人:2583万
展开全部
那段update语句改成如下语句
merge priceplan r
using ductprice p
on (r.ncorp=p.ncorp and r.noid = p.noid and r.start=p.nstart and r.nsta = 2021)
when matched then
update
set p.nprice= plan
;
追问

填上into 还是报下面的错,求解答啊大神?

merge into priceplan r using ductprice p on (r.ncorp=p.ncorp and r.noid =0 and r.start=12
and r.nsta = 2021) when matched then update set p.nprice= 0

micro0369
2014-12-22 · TA获得超过1.2万个赞
知道大有可为答主
回答量:9250
采纳率:85%
帮助的人:4064万
展开全部
Oracle中没有Update from 的语法

create or replace procedure priceplanpro
(nstart in number,noid in number,plan in number)
as
begin
if nstart > 0 then
update ductprice p set p.nprice= plan
where noid = noid and start=nstart and nsta = 2021
and exists(select * from priceplan r where r.ncorp=p.ncorp) ;
end if;
exception
when no_data_found then
dbms_output.put_line('数据不存在!');
end priceplanpro;
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式