关于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存储过程的若干问题备忘

1.在Oracle中,数据表别名不能加as,如:   select a.appname from appinfo a;-- 正确 select a.appname from a...
  • saming2010
  • saming2010
  • 2013年08月22日 20:33
  • 340

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

1.在oracle中,数据表别名不能加as,如:  select a.appname from appinfo a;-- 正确  select a.appname from appinfo as a;...
  • wucaijuan
  • wucaijuan
  • 2010年08月12日 15:01
  • 312

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

关于oracle存储过程的若干问题备忘07-06-19 13:38  发表于:《今日前沿工作室》 分类:未分类1.在oracle中,数据表别名不能加as,如:select a.appname from...
  • xymyeah
  • xymyeah
  • 2009年03月09日 14:45
  • 451

Oracle存储过程的若干问题备忘

Oracle存储过程的若干问题备忘 1. 在Oracle中,数据表别名不能加as。 2. 在存储过程中,select某一字段时,后面必须紧跟into,如果select整个记录,利用游标的话就另...
  • u012975700
  • u012975700
  • 2016年04月19日 11:27
  • 138

js&HTML 若干问题备忘

1. 使用jquery.fbmodel打开弹窗时的坑: 父页面引入fbmodel 点击按钮执行打开新页面按钮  var params = "rnd=" + Math.random() + "&...
  • shineych
  • shineych
  • 2015年10月24日 14:20
  • 335

宋宝华: 关于DMA ZONE和dma alloc coherent若干误解的彻底澄清

作者简介宋宝华,他有10几年的Linux开发经验。他长期在大型企业担任一线工程师和系统架构师,编写大量的Linux代码,并负责在gerrit上review其他同事的代码。Barry Song是Linu...
  • juS3Ve
  • juS3Ve
  • 2018年01月22日 00:00
  • 71

热烈欢呼国务院关于全面加强基础科学研究的若干意见的发布

热烈欢呼国务院关于全面加强基础科学研究的若干意见的发布近日,国务院印发《关于全面加强基础科学研究的若干意见》,要求各省、自治区、直辖市人民政府,国务院各部委、各直属机构认真执行,体现了国家的意志,科技...
  • yuanmeng001
  • yuanmeng001
  • 2018年02月01日 03:57
  • 86

关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明

转一篇非常有用的文章,先留着 【关于 A^x = A^(x % Phi(C) + Phi(C)) (mod C) 的若干证明】【指数循环节】 以下内容全部原创,转载请注明作者 : Ae...
  • ACM_cxlove
  • ACM_cxlove
  • 2012年08月04日 08:43
  • 2296

关于oracle存储过程

关于oracle存储过程的若干问题备忘1.在oracle中,数据表别名不能加as,如: select a.appname from appinfo a;-- 正确 select a.appname f...
  • quxiuer
  • quxiuer
  • 2008年04月20日 16:31
  • 478

问题备忘

未修复问题: 1, java.lang.IllegalArgumentException: bad parameter at org.apache.http.client.utils.URLEnc...
  • yangdeli888
  • yangdeli888
  • 2016年01月25日 14:59
  • 2468
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于oracle存储过程的若干问题备忘
举报原因:
原因补充:

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