`
JYLike97
  • 浏览: 22057 次
  • 性别: Icon_minigender_1
  • 来自: 四川
文章分类
社区版块
存档分类
最新评论

关于pl/sql的查询语句技巧个人总结

阅读更多
1,在多表联合查询时由于要查出多个表中所需的关键字段,有时候给人很复杂的感觉。
其实仔细分析一下并不难啊~~~~
a.首先列出你要的所有字段。
select t.touristid,t.touristname,t.sex,t.mobile,t.times,
       c.cardid,nt.nationname,tp.tourtypename,p.provincename,
       ct.countryid,ct.countryname,h.hotelname,rs.chamberid,
       cc.certificatetypename,bd.days,bd,indate,bd.valid

b.在列出你多需要关联的表并取其别名
 from tourist t,touristtype tp,certificate c,certificatetype cc,
        nation nt,province p,country ct,hotel h,rooms rs,
        bookdetail bd,book bk
 
c.将所有的表的字段关联起来
   where t.tourtypeid=tp.tourtypeid
     and cc.typeid=c.typeid
     and t.countryid=ct.countryid
     and t.nationid=nt.nationid
     and t.certificateid=c.certificateid
     and t.provinceid=p.provinceid
     and t.touristid=bk.touristid
     and bk.hotelid=h.hotelid
     and bk.bookid=bd.bookid
     and bd.roomid=rs.roomid

d.最后再加上此次查询的约束条件就可以了
大功告成~~~~~哈哈
完整存储过程代码如下 
--根据证件号码,及游客姓名(姓名模糊查找)查找与游客相关的所有入住信息
procedure searchfulltourinfo(p_cardid certificate.cardid%type,
                             p_touristname tourist.touristname%type,
                             b out ems_cursor)
as
begin
 open b for
 select distinct
        t.touristid,t.touristname,ct.countryid,
        cc.certificatetypename,t.sex,t.mobile,
        t.times,c.cardid,nt.nationname,tp.tourtypename,
        p.provincename,ct.countryname,h.hotelname,
        rs.chamberid,bd.days,bd.indate,bd.valid


   from tourist t,touristtype tp,certificate c,certificatetype cc,
        nation nt,province p,country ct,hotel h,rooms rs,
        bookdetail bd,book bk

   where t.tourtypeid=tp.tourtypeid
     and cc.typeid=c.typeid
     and t.countryid=ct.countryid
     and t.nationid=nt.nationid
     and t.certificateid=c.certificateid
     and t.provinceid=p.provinceid
     and t.touristid=bk.touristid
     and bk.hotelid=h.hotelid
     and bk.bookid=bd.bookid
     and bd.roomid=rs.roomid
     and (p_cardid is null or c.cardid=p_cardid)
     ----与非表达式判断游客名是否为空,如果不为空则模糊查询
     and (p_touristname is null or upper(trim(t.touristname)) 
         like'%'||upper(trim(p_touristname))||'%')
     and rownum<=60
     order by bd.indate desc;
end searchfulltourinfo;

2,模糊查询
关于模糊查询的语法如下
select * from tourist t 
     where upper(trim(t.touristname)) 
      like '%'||upper(trim(p_touristname))||'%';

3,子查询(类似于临时表)
当条件比较复杂时,可以尝试先实现一部分条件查询产生的结果集,
再从结果集中查出最后结果
--根据酒店id及房间类型id计算照片数量
PROCEDURE GETPHOTONUMBER(P_USERID NUMBER,
                         P_TYPE NUMBER,
                         P_RESULT OUT NUMBER)
AS
V_A NUMBER :=-1;
BEGIN
P_RESULT:=-1;
IF P_TYPE=1 THEN--计算酒店照片数量
      SELECT COUNT(P.PHOTOID) 
     INTO V_A FROM PHOTOES P
     WHERE EXISTS(SELECT 1/*+rule*/ FROM PHOTOES P,HOTEL H
                                           WHERE H.VALID=0
                                             AND P.VALID=0
                                             AND P.HOTELID=H.HOTELID
                                             AND P.PHOTOTYPEID=P_TYPE
                                             AND H.USERID=P_USERID);

ELSe
IF P_TYPE=2 THEN--计算房间类型数量
     SELECT COUNT(P.PHOTOID) 
    INTO V_A FROM  PHOTOES P
    WHERE EXISTS(SELECT 1/*+rule*/ FROM PHOTOES P,HOTEL H
                                          WHERE H.VALID=0
                                            AND P.VALID=0
                                            AND P.HOTELID=H.HOTELID
                                            AND P.PHOTOTYPEID=P_TYPE
                                            AND H.USERID=P_USERID);

P_RESULT:=V_A;
else
P_RESULT:=-1;
END IF;
END IF;
END GETPHOTONUMBER;
分享到:
评论

相关推荐

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    pl/sql例题代码pl/sql例题代码pl/sql例题代码

    PL/SQL 创库语句

    PL/SQL 创库语句PL/SQL 创库语句PL/SQL 创库语句

    基本SQL语句及PL/SQL语句

    SQL基本语句和PL/SQL语句,很多实例,让你一目了然

    Oracle PL/SQL语言初级教程

    PL/SQL是Oracle对标准数据库语言的扩展,Oracle公司已经将PL/SQL整合到Oracle 服务器和...通过本教程的学习,您将初步掌握PL/SQL语言,能够利用PL/SQL语言完成建表、查询、添加、删除数据以及事务处理语句的基本用法。

    PL/SQL免安装版

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL免安装版,点击即用,非常方便!

    PL/SQL Developer 客户端

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

    SQL、pl/sql基础语句大全

    自己总结的,适合于初学者,下载后打印即可使用。

    PL/SQL编程基础知识

    PL/SQL 编程基础知识详解,PL/SQL 包含过程化语句和SQL语句数据操作和查询语句被包含在PL/SQL代码的程序单元中(PL/SQL块),经过逻辑判断、循环等操作完成复杂的功能或者计算.。

    Oracle PL/SQL程序设计(第5版)(下册)第二部分

    《Oracle PL/SQL程序设计(第5版)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何有效地使用它。...

    PL/SqlDeveloper汉化版

    用PL/SQL 是 Oracle公司在标准 SQL 语言上进行一定的扩展而形成的一种数据库语言。它寄托于传统的 SQL 语句,同时又在功能上做了不少的扩充。PL/SQL 有着太多的优势,甚至让SQL 在它面前也黯然失色。 PL/SQL ...

    PL/SQL美化器规则文件,用于格式美化sql语句

    PL/SQL使用方法: 1、工具--首选项--用户界面--PL/SQL美化器--规则文件,选择.br的规则文件,点确定按钮。 2、点击工具栏的“PL/SQL美化器”,会自动把一段SQL语句重新排版美化。

    精通Oracle 10g SQL和PL/SQL

     本书是专门为oracle开发人员而提供的编程指南 通过学习本书 读者不仅可以掌握编写sql语句和pl/sql块的基础知识 而且还可以掌握sql高级特征 正则表达式 flashback查询 merge语句 sql:1999连接 和pl/sql高级特征 ...

    PL/SQL Developer 6.05注册版-1

    &lt;br&gt;SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL...

    PL/SQL Developer v8.0.zip

    更进一步,您还可以自动获取所执行的SQL语句和PL/SQL程序统计信息。该统计信息包括CPU使用情况、块I/O、记录I/O、表格扫描、分类等。 HTML指南——Oracle目前支持HTML格式的在线指南。您可以将其集成到PL/SQL ...

    PL/SQL课件

    PL/SQL中的SQL语句(第3章) 控制结构(第4~7章) 异常处理(第8~10章) 游标(第11~12章) 触发器(第13~14章) 复合数据类型(第15~16章) 动态SQL(第17章) 批量SQL(第18章) 子程序和包(第19~22章) Oracle中...

    PL/SQL Developer 9.0.4.1644 绿色中文版_带注册机

    这些任务——编辑、编译、纠正、测试、调试、优化和查询——都可以在不离开 PL/SQL Developer IDE 的情况下被完成。此外,PL/SQL Developer 还提供了其他几个能在每天的PL/SQL 开发中提供帮助的工具。 注册有图示,...

    PL/SQL Developer 7.1.5 注册版-3

    &lt;br&gt;SQL 窗口——该窗口允许您输入任何SQL语句,并以栅格形式对结果进行观察和编辑,支持按范例查询模式,以便在某个结果集合中查找特定记录。另外,还含有历史缓存,您可以轻松调用先前执行过的SQL语句。该SQL...

    PL/SQL Developer

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。MySQL 不支持 PL/SQL ,但支持Navicat Premium。

    PL/SQL编辑器

    在普通SQL语句的使用上增加了编程语言的特点,所以PL/SQL把数据操作和查询语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作实现复杂的功能或者计算。PL/SQL 只有 Oracle 数据库有。 MySQL 目前不支持 ...

Global site tag (gtag.js) - Google Analytics