关于oracle存储过程的若干问题备忘

转载 2007年09月19日 11:06:00

 

 

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,定义如下:
create table A(
id 
varchar2(50primary key not null,
vcount 
number(8not null,
bid 
varchar2(50not 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);
                        cs.execute();
                        
return null;
                    }

                }
);
 
举报

相关文章推荐

项目中oracle存储过程记录——常用语法备忘

项目中需要写一个oracle存储过程,需求是收集一个复杂查询的内容(涉及到多张表),然后把符合条件的记录插入到目标表中。其中原表之一的日期字段是timestamp类型,目标表的字段是varchar2类...

Orcle 存储过程调用封装类-备忘

主调用: import java.io.InputStream; import java.net.URL; import java.sql.Date; import java.sql.Resu...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

tibco 调用存储过程(参数为date)备忘

Tibco 版本是5.5 1. tibco 调用数据库的存储过程, 如果参数A 类型为date, 如果传递给参数A 的数值是空字符串, 那么将会报:Input data invalid 的错误....

mysql知识备忘(建表、存储过程、初次安装启动)

建表模板: Mysql临时表 当你创建临时表的时候,你可以使用temporary关键字。如: create temporary table tmp_table(name varchar(10)...

UPX对Android上ELF加壳使用过程中的若干问题总结

下面内容部分摘录自:http://www.cnblogs.com/fishou/p/4202061.html 5、相关问题总结 5.1、编译UPX出现“cannot find -lz”错误。 ...

opnet初探以及Packet Switching I实验过程中的若干问题的思考

之前虽然经常听到opnet这个工具,但是de

CLM框架的编译及自己在编译过程中的若干问题的解决

CLM是一个人体特征点提取的框架,他的功能是提取五官及脸的轮廓,同时可以检测人脸当前的朝向等,是一个不错的人脸检测框架。但是在编译过程中,还是会遇到不少问题。接下来我就说一下,在我的编译过程中遇到的问...

VS2013 opencv2.4.9 配置过程若干问题

VS2013 配置opencv2.4.9的详细教程:http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html问题:计算机丢失open...

[2013.7.5新鲜出炉] Ubuntu12.04下载Android4.0.1源码全过程----------------折腾两天,终于下好,附若干问题解决

折腾两天,参考了十几篇文章,源码终于顺利下载了,下一步就是编译源码。希望日后再下源码的人不要再走无谓的弯路了,按文中步骤保证无障碍下载源码!
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)