请教一个oracle存储过程的问题 - Oracle / 基础和管理
代码如下:
create procedure putdraw
(ID char,money number)
as
vbalance number,vname char;
begin
select Bmoney,name into vbalance,vname from bankcheck
where CIN=ID;
if(vname is null) then
raise_application_error(-20000,'please create a zhanghao');
end if;
update bankcheck set Bmoney=Bmoney+money
where CIN=ID;
end;
/
要实现对bankcheck存钱,如果没有账户就需要重新开新账户,上面出错不知怎么处理,望各位高手指点下
没人,自己顶顶先
if 你加括号了。
vname char;
改成VARCHAR2(5)
建议用merge
merge into tablea
using tableb
on (conditions)
when matched then
update
set ...
when not matched then
insert into
values (...)
关键错误在于你定义的两个变量之间不能用逗号分隔。
SQL code:
SQL> create procedure putdraw
2 (ID char,money number)
3 as
4 vbalance number;
5 vname char;
6 begin
7 select Bmoney,name into vbalance,vname from bankcheck
8 where CIN=ID;
9 if(vname is null) then
10 raise_application_error(-20000,'please create a zhanghao');
11 end if;
12 update bankcheck set Bmoney=Bmoney+money
13 where CIN=ID;
14 end;
15 /
Procedure created
SQL> select * from bankcheck;
BMONEY NAME CIN
---------- -----
相关问答:
大家好,我现在把oracle服务器上面的原始文件,下载到本机了.我想在本机访问数据库怎么设置啊.是不是类似可以建立一个什么虚拟服务器来实现.请大家出出主意
引用
大家好,我现在把oracle服务器上面 ......
在执行包的时候引用oracle spatial空间函数出错,出错情况如下
Errors in file
/user/oracle/app/oracle/admin/grid/udump/grid1_ora_143768.trc: ORA-29902:
error in executing ODCIIndexStart() routine ORA-0 ......
在系统运行的时候总是有一块磁盘始终闪红灯,进入系统后
#topas查看总是有一块磁盘%BUSY为90%以上,
数据库版本:oracle 9.2.0.7
数据文件挂载的节点:/oradata/pcs/ 逻辑卷号lv04
#lslv -l lv04
......
假设table01 中有 以下资料
emp_no emp_name
------- ------------
0001 TOM
0002 JOHN
0003 MARY
常用电话
而我们要得到以下的OUTPUT (或是各种其他的output)
0001,TOM
0002,JOHN
......
SQL code:
CREATE OR REPLACE PROCEDURE usp_refreshTopN IS
BEGIN
--文档
INSERT INTO topnresource(resourceId,title,type,cover,brief,properUser,tag,clickAmount,createDate,topNCreateDate,organizat ......