`
fansfirst2008
  • 浏览: 95567 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ORACLE里面的外连接和||

阅读更多

 ORACLE里面的外连接可以简写成:

 (+)=:右连接的简写

 也就是:保留右表存在,左表不存在的行!

=(+):左连接

 也就是:保留左表存在,右表不存在的行!

 对于这种简写的局限性是显而易见的

可读性就很差,需要花时间去理解.因为我们的思维方式是:首先是怎么去连接,然后用什么条件过滤!分成两步走,便使得SQL清晰易懂.

记得在数据结构里面,完成表达式求解的算法也是采取分两步走的策略,一:转换成后缀表达式,二:然后在求职!虽然一步理论上可以达到,但是根据电脑的思维方式,采取两步走,是最容易实现的!

而SQL就是宣称的以人类的思考方式去解决问题!

 

 

||在ORACLE里面是连接字符串,相当于+

在构造可执行的SQL字符串时候,对于IN 变量,动态构造SQL语句时候如下所示

       then
         tempsql := ' and sp.department_oid = '||''''||de_oid||'''';
       end if;           
       if vFlag = '1' then
         if flag ='1' then 
         open result for 
         'select t.inv_stock_oid INV_STOCK_OID,t.stock_type_id STOCK_TYPE_ID,t.inv_position_oid INV_POSITION_OID,nvl(t.safety,0)-t.qty state,
          t.part_no PART_NO,t.part_name PART_NAME,t.spec SPEC,t.unit UNIT,t.qty TOTALQTY,t.safety SAFETY,t.update_time UPDATE_TIME,
          t1.potion_id POSITION_ID,t1.description POSITION_DESC,t2.stock_type_id STOCK_TYPE_ID,t2.description TYPE_DESC,
          sp.inv_partnoclass_oid partnoclassoid,sp.qty DEQTY,sp.safe_qty SAFEQTY,de.department_name DEPARTMENT
          from inv_stock t,inv_position t1,inv_stock_type t2,inv_stock_partnoclass sp,basicdata_department de
          where  de.department_oid(+) = sp.department_oid'
          ||tempsql||'
          and sp.inv_stock_oid(+) = t.inv_stock_oid
          and t.stock_type_id = t2.inv_stock_type_oid 
          and t.inv_position_oid = t1.inv_position_oid(+)
          and t2.description='||''''||vCondition||''''||'                    
           order by state desc';
           return result; 

注意特别奇怪的如下写法

 tempsql := ' and sp.department_oid = '||''''||de_oid||'''';
t2.description='||''''||vCondition||''''||'  

 

为什么会有那么多单引号呢?

首先我来说我们期望的结果是:对于变量,这里用字符串常量来代替

sp.department_oid = 'something';

而在代码中那个变量仅仅替代值,也就是something,

还有前后两个单引号需要表示出来,但是它们是直接常量,所以当作字符串写,就需要再加两个单引号括起来,最后转义的一个

所以每次总共四个!

 

一定有比这个更好的解决办法,目前由于对于ORACLE是新手,好多东西都有待学习

欢迎共同讨论

 

 

分享到:
评论

相关推荐

    Oracle客户端连接Oracle服务器.docx

    本章主要讲解oracle客户端连接oracle效劳器,主要有以下内容: 1.配置本地net效劳名配置 2.用sqlplus连接; 3.用toad连接; 一、配置本地net效劳名 首先说明我们的效劳器的IP为60.220.246.53,oracle的SID为czdb。 ...

    unity连接oracle数据库

    unity连接oracle的简单方式,需要注意的是unity版本需要2017以上版本,并且在playersetting里面设置脚本版本为4.6,文件里包含需要的dll文件以及测试类

    J2EE 中连接Oracle的驱动

    J2EE 中连接Oracle的驱动包,里面有classes12.jar,ojdbc14.jar是软件开发时与Oracle数据库连接必不可少的数据库驱动

    Oracle数据库-TNS连接

    Oracle数据库-TNS连接 第一份工作是在东亚银行,规定要穿正装上班,当时身上没有什么钱,只能去地摊上买黑裤子搭白衬衫,不忍直视。 进入项目组,第一件事就是给电脑安装Oracle客户端和PL/SQL。就如同你的钱存在银行...

    springboot框架(连接了Oracle)

    这是自己搭建的一个连接了Oracle的springboot 框架,里面搭建好了前端和后端的架构,前端使用了layer bootstrap,jQuery 等技术

    Oracle数据库连接字符串

    oracle数据库的连接方式,在labview软件里可以用里面介绍的方式进行连接

    .Net连接Oracle

    Oracle连接数据库,这是一个.net连接Oracle的案例,里面有分页功能

    C# oracle三种连接方法

    里面是我整理了三种连接oracle数据库的方法,适合初学,有兴趣可看看。本来有四种方法,那种用起来很麻烦,直接删掉了。

    C#中oracle连接数据库的封装类

    C#中oracle连接数据库的封装类,有简短的说明

    Oracle10g局域网成功连接远程数据库详细步骤

    情景描述:之前都是别人给好一个连接远程Oracle数据库的ip地址,直接在我的客户端的tnsnames.ora文件中添加连接的代码就可以成功的访问远程的Oracle数据库了。但现在的情况是,在局域网中,连接我朋友的Oracle数据库...

    oracle 11G连接工具plsqldev9,64位和32位

    oracle的客户端连接工具,里面包含plsqldev第9版,+oracle11G的客户端(可以访问11G以上的oracle数据库)+环境变量等配置说明文档。

    C++连接Oracle

    C++连接Oracle,里面介绍了怎么连接oracle数据库

    oracle表连接和子查询实例

    oracle表连接和子查询实例 所有的实例查询都包含在里面,不会担心笔试oracle子查询。

    php连接Oracle的配置详解及测试代码

    PHP连接Oracle的配置,插件,全在里面,教程很详细,本人亲测,完全有效

    java oracle 数据库 连接池 小例子

    java oracle 数据库 连接池 小例子 里面很详尽的使用C3p0,配置文件, 可以成功运行, 只需要修改一下配置文件里面的驱动就好了

    Python连接oracle工具cx_Oracle官方文档

    Python连接Oracle数据库,最常用的就是cx_Oracle包了,这是一篇cx_Oracle工具的官方文档,里面详细介绍了cx_Oracle的特点安装配置等,有需要的同学可以下载来看

    navicat 连接oracle 11g驱动包

    我在之前项目中连接Oracle12是不报错的,也不需要做任何配置,直接选择basic或者TNS连接方式都可以顺利连接,刚开始也很恼火,查了资料后,加载这个驱动就行,最终解决,这里面还有连接hive和mysql的,大家也可以存...

    Java连接Oracle(很完备哦)

    Java连接Oracle.rar,超值版 里面包含JDBC驱动包,Java连接Oracle的初级教程,实例代码. 保证让你一看就会.

    odbc连接oracle11g数据库

    压缩文件里面有odbc连接oracle所需要的客户端及匹配的odbc连接文件,在win7 64位操作系统中亲测,绝对好用。里面还有我经过多次试验整理的使用文档,愿能帮助迷茫中的人们。

    MySQL或Oracle通过ODBC与C#建立连接和进行事务处理

    1.通过ODBC使C#能够对MySQL数据进行访问,并可以...2.通过ODBC使C#能够对Oracle数据进行访问,并可以进行事务处理。 3.文档里面包含了环境配置,软件安装的全过程。最后包含了可执行的数据库连接共同的C#代码提供参考。

Global site tag (gtag.js) - Google Analytics