`
fansfirst2008
  • 浏览: 98689 次
  • 性别: 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是新手,好多东西都有待学习

欢迎共同讨论

 

 

分享到:
评论

相关推荐

    unity连接oracle数据库

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

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

    在C#编程环境中,Oracle数据库的连接和操作通常需要通过ADO.NET或者其他第三方库来实现。在本场景中,我们关注的是一个名为"C#中oracle连接数据库的封装类"的主题,这个主题涉及到创建一个名为`DbHelperOra.cs`的类...

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

    TOAD是Oracle提供的一个图形化的数据库管理工具,用于连接和管理Oracle数据库。使用TOAD连接需要输入用户名和密码,然后可以执行SQL语句来操作数据库。 四、Oracle远程连接数据库总结 Oracle远程连接数据库需要...

    MFC对Oracle数据库操作

    一个类是用来连接和操作数据库的,下载之后可以将你自己的Oracle配置参数写入初始化文件“OracleDemo\OracleDemo\WXZJ.ini”中,就可以连接了,其中的函数是向表中插入数据,你可以根据你的表格进行修改。...

    oracle5.jar 和oracle6.jar驱动jar包

    Oracle数据库在Java应用程序中通常通过JDBC(Java Database Connectivity)驱动进行交互,而`ojdbc6.jar`和`ojdbc5.jar`就是Oracle公司提供的JDBC驱动程序,用于连接Java应用到Oracle数据库。这两个jar包是Oracle ...

    oracleClient安装包exp和imp文件.zip

    Oracle客户端是与Oracle服务器进行通信的软件组件,它包含了连接数据库所需的库、驱动和工具。Oracle客户端11.2.0.4.0是该系列的一个稳定版本,提供了对Oracle数据库服务器的访问能力,包括数据查询、应用程序开发和...

    navicat 连接oracle 11g驱动包

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

    java连接AmericanascII7字符集oracle例子

    在Java开发中,连接Oracle数据库是一项常见的任务,尤其是在处理特定字符集如American ASCII7时,开发者需要对字符编码有深入的理解。Oracle数据库支持多种字符集,包括ASCII,它是最基础的7位字符集,包含32个控制...

    plsql连接oracle的包

    --tnasname.ora:在plsql_oracle这个包里面 2,配置oracle监听,即环境变量 右击我的电脑选”属性”->“高级”->“环境变量”->”系统变量” 新增下面两个变量 变量名:TNS_ADMIN 变量值:D:\IT\plsql_oracle\...

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

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

    PLSQL 715 ORACLE数据库客户端连接工具

    PLSQL 715 ORACLE数据库客户端连接工具 里面有安装说明,能顺利注册安装。

    oracle+win10+VS2015无法连接数据库问题

    然后配置这个安装软件文件夹里面的tnsname.ora文件 http://www.oracle.com/technetwork/cn/testcontent/o23odp-084525-zhs.html http://download.csdn.net/download/xifenfei/2247281 这个是别人封装的一个工具类 ...

    PL/Sqldeveloper远程连接服务器oracle数据库的配置

    安装PL/SQL Developer后,需要在Tools->Perference->Connection里面设置OCI Library和Oracle_Home。例如本机设置为: Oracle Home :F:\oracle\11.2.0\client_1 OCI Library :F:\oracle\11.2.0\client_1\oci.dll ...

    SQL Developer远程连接oracle客户端工具包和方法

    这是一个我自己整理的用SQL Developer远程连接服务器oracle数据库的工具包,不需要安装本机oracle客户端,也不需要安装其他客户端软件,纯绿色版。配置快而轻松。特别适合刚接触oracle的和不想在本机安装oracle...

    PLSQL developer 和 oracle 客户端

    这个客户端包含了连接数据库所需的各种库文件和实用工具,如OCI(Oracle Call Interface)、SQL*Plus等,使得应用程序可以无需完整安装整个Oracle数据库服务器就能与之通信。 在32位系统中安装这两个软件时,首先...

    toad青蛙连接64位oracle必备客户端

    如果本地没有安装32位oracle,是无法使用toad的(无论连接32位还是64位oracle),即使安装了64位oracle也不识别64位oracle客户端,办法是下载32位客户端。下载完,解压到d盘根目录,执行里面的注册表文件,如果要改...

    Kettle链接Oracle12c数据库驱动

    Kettle链接Oracle数据库比较坑,为试了很多驱动都不能正常驱动,一会报没有发现驱动,一会报字符集问题,我找我们公司大佬要了一个驱动,直接可以驱动起来,特此分享! 备注:解压jdbc压缩文件,将里面所有的jar...

    Oracle远程连接资源

    这里面包含两个压缩包instantclient-basic-win-x86-64-11.2.0.1.0.zip,instantclient-sqlplus-win-x86-64-11.2.0.1.0.zip 仅支持Oracle11g

    操作Oracle的DLL文件

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统之一,它的强大功能和稳定性使其在企业级应用中占据了重要地位。本文将详细讲解如何通过操作Oracle的DLL文件——System.Data.OracleClient.dll来实现对Oracle...

    在myeclipse(java)中连接Oracle数据库的代码

    在MyEclipse中连接Oracle数据库是一项常见的开发任务,主要用于实现Java应用...以上就是在MyEclipse中使用Java连接Oracle数据库的基本步骤和关键知识点。理解并熟练掌握这些内容,将有助于你构建高效稳定的数据库应用。

Global site tag (gtag.js) - Google Analytics