Oracle数据库存储过程的6个问题

chenchen1912

chenchen1912

2016-02-19 13:53

有了下面这个Oracle数据库存储过程的6个问题教程,不懂Oracle数据库存储过程的6个问题的也能装懂了,赶紧get起来装逼一下吧!

1.在oracle中,数据表别名不能加as,如:

select a.appname from appinfo a;-- 正确

select a.appname from appinfo as a;-- 错误

也许,是怕和oracle中的存储过程中的关键字as冲突的问题吧

2.在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另当别论了。

select af.keynode into kn from APPFOUNDATION af where af.appid=aid and af.foundationid=fid;-- 有into,正确编译

select af.keynode from APPFOUNDATION af where af.appid=aid and af.foundationid=fid;-- 没有into,编译报错,提示:Compilation

Error: PLS-00428: an INTO clause is expected in this Select statement

3.在利用select...into...语法时,必须先确保数据库中有该条记录,否则会报出"no data found"异常。

可以在该语法之前,先利用select count(*) from 查看数据库中是否存在该记录,如果存在,再利用select...into...

4.在存储过程中,别名不能和字段名称相同,否则虽然编译可以通过,但在运行阶段会报错

select keynode into kn from APPFOUNDATION where appid=aid and foundationid=fid;-- 正确运行

select af.keynode into kn from APPFOUNDATION af where af.appid=appid and af.foundationid=foundationid;-- 运行阶段报错,提示

orA-01422:exact fetch returns more than requested number of rows

5.在存储过程中,关于出现null的问题

假设有一个表A,定义如下:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

create table A(

id varchar2(50) primary key not null,

vcount number(8) not null,

bid varchar2(50) not null -- 外键

);如果在存储过程中,使用如下语句:

select sum(vcount) into fcount from A where bid='xxxxxx';如果A表中不存在bid="xxxxxx"的记录,则fcount=null(即使fcount定义时设置了默认值,如:fcount number(8):=0依然无效,fcount还是会变成null),这样以后使用fcount时就可能有问题,所以在这里最好先判断一下:

if fcount is null then

fcount:=0;

end if;这样就一切ok了。

6.Hibernate调用oracle存储过程

this.pnumberManager.getHibernateTemplate().execute(

new HibernateCallback() ...{

public Object doInHibernate(Session session)

throws HibernateException, SQLException ...{

CallableStatement cs = session

.connection()

.prepareCall("{call modifyapppnumber_remain(?)}");

cs.setString(1, foundationid);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

cs.execute();

return null;

}

});

展开更多 50%)
分享

猜你喜欢

Oracle数据库存储过程的6个问题

编程语言 网络编程
Oracle数据库存储过程的6个问题

数据库存储过程分页显示

编程语言 网络编程
数据库存储过程分页显示

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

sqlserver 复制表 复制数据库存储过程的方法

编程语言 网络编程
sqlserver 复制表 复制数据库存储过程的方法

MySQL数据库存储引擎详解

编程语言 网络编程
MySQL数据库存储引擎详解

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

Oracle存储过程之数据库中获取数据实例

编程语言 网络编程
Oracle存储过程之数据库中获取数据实例

用Java实现HTML文件代替数据库存储数据

Web开发
用Java实现HTML文件代替数据库存储数据

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

自动识别HTML的标记 替换连接

自动识别HTML的标记 替换连接

love挥霍、痛苦 - QQ伤感分组

love挥霍、痛苦 - QQ伤感分组
下拉加载更多内容 ↓