欢迎来到天天文库
浏览记录
ID:34722817
大小:82.68 KB
页数:4页
时间:2019-03-10
《ejb3jpa调用原生sql和函数存储过程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、1.调查JPQL如何使用原生SQL…………….//创建EntityManageremListusers=em.createNativeQuery("SELECT*FROMUSER").getResultList();for(inti=0;i2、um:查询时生成1.根据ROWID来分select*fromt_xiaoxiwhererowidin(selectridfrom(selectrownumrn,ridfrom(selectrowidrid,cidfromt_xiaoxi orderbyciddesc)whererownum<10000)wherern>9980)orderbyciddesc;执行时间0.03秒2.按分析函数来分select*from(selectt.*,row_number()over(orderbyciddesc)rkfromt_xiaoxit)whererk<10000andrk>9980;执3、行时间1.01秒3.按ROWNUM来分select*from(selectt.*,rownumrnfrom(select*fromt_xiaoxiorderbyciddesc)twhererownum<10000)wherern>9980;执行时间0.1秒其中t_xiaoxi为表名称,cid为表的关键字段,取按CID降序排序后的第9981-9999条记录,t_xiaoxi表有70000多条记录个人感觉1的效率最好,3次之,2最差原生SQL实现对m_user分页select*fromm_userwhererowidin(selectridfrom(selectrownumrn,ri4、dfrom(selectrowidridfromm_userorderbyuser_id)whererownum<10)wherern>4)orderbyuser_id1.调查Oracle如何创建存储过程网上资料 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END;行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;行2: IS关键词表明后面将跟随一个PL/SQL体。行3: 5、 BEGIN关键词表明PL/SQL体的开始。行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;行5: END关键词表明PL/SQL体的结束用函数实现分页createorreplacefunctionf_test(pagenumber,pageSizenumber)returnsys_refcursorisuserssys_refcursor;beginopenusersforselect*fromm_userwhererowidin(selectridfrom(selectrownumrn,ridfrom(selectrow6、idridfromm_userorderbyuser_id)whererownum<=((page-1)*pageSize+pageSize))wherern>((page-1)*pageSize))orderbyuser_id;return(users);endf_test;3.调查JPQL如何调用存储过程1.无返回值的存储过程。…………….//创建EntityManageremQueryquery=em.createNativeQuery("{callp_test2('48','106')}");query.executeUpdate();4.说明调用存储过程和用原生SQL的7、优缺点原生查询的缺点:原生查询的缺点是结果绑定的复杂性。在实际中,您经常需要处理复杂类型的结果集。在这种情况下,您需要声明一个可以将您的原生查询映射到的实体,或者定义一个映射到多个实体或实体和标量结果的组合的复杂结果集。原生查询的另一个缺点是Java代码直接依赖于底层数据库结构。如果您修改该底层结构,您将需要在您的servlet和/或其他应用程序组件中调整相关的原生查询,然后再重新编译和部署这些组件。原生查询的优点:原生SQL是多数关系数据库管理系统所支持的工业标准。使具有完全不
2、um:查询时生成1.根据ROWID来分select*fromt_xiaoxiwhererowidin(selectridfrom(selectrownumrn,ridfrom(selectrowidrid,cidfromt_xiaoxi orderbyciddesc)whererownum<10000)wherern>9980)orderbyciddesc;执行时间0.03秒2.按分析函数来分select*from(selectt.*,row_number()over(orderbyciddesc)rkfromt_xiaoxit)whererk<10000andrk>9980;执
3、行时间1.01秒3.按ROWNUM来分select*from(selectt.*,rownumrnfrom(select*fromt_xiaoxiorderbyciddesc)twhererownum<10000)wherern>9980;执行时间0.1秒其中t_xiaoxi为表名称,cid为表的关键字段,取按CID降序排序后的第9981-9999条记录,t_xiaoxi表有70000多条记录个人感觉1的效率最好,3次之,2最差原生SQL实现对m_user分页select*fromm_userwhererowidin(selectridfrom(selectrownumrn,ri
4、dfrom(selectrowidridfromm_userorderbyuser_id)whererownum<10)wherern>4)orderbyuser_id1.调查Oracle如何创建存储过程网上资料 1 CREATE OR REPLACE PROCEDURE 存储过程名 2 IS 3 BEGIN 4 NULL; 5 END;行1: CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;行2: IS关键词表明后面将跟随一个PL/SQL体。行3:
5、 BEGIN关键词表明PL/SQL体的开始。行4: NULL PL/SQL语句表明什么事都不做,这句不能删去,因为PL/SQL体中至少需要有一句;行5: END关键词表明PL/SQL体的结束用函数实现分页createorreplacefunctionf_test(pagenumber,pageSizenumber)returnsys_refcursorisuserssys_refcursor;beginopenusersforselect*fromm_userwhererowidin(selectridfrom(selectrownumrn,ridfrom(selectrow
6、idridfromm_userorderbyuser_id)whererownum<=((page-1)*pageSize+pageSize))wherern>((page-1)*pageSize))orderbyuser_id;return(users);endf_test;3.调查JPQL如何调用存储过程1.无返回值的存储过程。…………….//创建EntityManageremQueryquery=em.createNativeQuery("{callp_test2('48','106')}");query.executeUpdate();4.说明调用存储过程和用原生SQL的
7、优缺点原生查询的缺点:原生查询的缺点是结果绑定的复杂性。在实际中,您经常需要处理复杂类型的结果集。在这种情况下,您需要声明一个可以将您的原生查询映射到的实体,或者定义一个映射到多个实体或实体和标量结果的组合的复杂结果集。原生查询的另一个缺点是Java代码直接依赖于底层数据库结构。如果您修改该底层结构,您将需要在您的servlet和/或其他应用程序组件中调整相关的原生查询,然后再重新编译和部署这些组件。原生查询的优点:原生SQL是多数关系数据库管理系统所支持的工业标准。使具有完全不
此文档下载收益归作者所有