`

DB Oracle SqlServer 兼容问题(随项目持续更新3)

 
阅读更多

Oracle SqlServer  同时支持,挺费劲的,问题(日期与临时表兼容,Tree 型数据所有父节点,子节点处理

1.    select
        count(*)
    from
        (select
            *
        from
            transaction_history
        union
        select
            *
        from
            transaction
    )  --无别名(Oracle)
where
    to_char(createdate,'yyyy-MM-dd')<='2012-01-06'
    and  to_char(createdate,'yyyy-MM-dd')>='2011-12-27' 
    and stockcode='000016'

但是SqlServer 不行,必须对临时表别名

select
        count(*)
    from
        (select
            *
        from
            transaction_history
        union
        select
            *
        from
            transaction
    )  _temp--有别名(SqlServer)
where
  convert(varchar(10), createdate, 20) <='2012-01-06'
    and  convert(varchar(10), createdate, 20) >='2011-12-27' 
    and stockcode='000016'

2.SQL 获取所有父节点

Sql_server fn:


CREATE FUNCTION f_getAllParent(@SID varchar(200))
RETURNS @t_Level TABLE(SID varchar(200),name varchar(100),Level int)
AS
BEGIN
    declare @name varchar(100) 
    DECLARE @Level int
    SET @Level=1
    select @name=name from SYS_UNIT where sid=@sid
    INSERT @t_Level SELECT @SID,@name,@Level
    WHILE @@ROWCOUNT>0
    BEGIN
        SET @Level=@Level+1
        INSERT @t_Level
    SELECT a.parentsid,a.name,@Level
    FROM SYS_UNIT a,@t_Level b
    WHERE a.sid=b.sid
     AND b.Level=@Level-1
    END
    RETURN
END
GO

测试代码:

select a.sid  from SYS_UNIT a , f_getAllParent('dc=com') b where a.sid = b.sid order by b.Level

 

Oracle suppoet key word:

 SELECT SID FROM SYS_UNIT

 CONNECT BY PRIOR parentsid=sid  --(prior 后跟的是父节点,则以 START WITH SID='dc=com'
指定的特定子节点作为当前子节点往上遍历所有父节点)
 START WITH SID='dc=com'

 

3.获取所有子节点:

Sql_server fn:

create function f_GetAllChild(@sid varchar(200))
returns @re table(sid varchar(200),name varchar(100),level int) 
as 
begin
  declare @name varchar(100) 
  declare @level int 
  set @level=1 
  select @name=name from SYS_UNIT where sid=@sid
  insert @re select @sid,@name,@level 
  while @@rowcount>0 
  begin 
  set @level=@level+1 
  insert @re select a.sid,a.name,@level 
  from SYS_UNIT a,@re b 
  where a.parentsid=b.sid and b.level=@level-1 
  end 
  return 
end
go

select a.sid,b.level  from SYS_UNIT a , f_GetAllChildRole('dc=com') b where a.sid = b.sid order by b.Level

 

Oracle suppoet key word:

 

 SELECT SID FROM SYS_UNIT

 CONNECT BY PRIOR sid=parentsid  --(prior 后跟的是子节点,则以 START WITH SID='dc=com'
指定的特定子节点作为当前根节点往下遍历所有子节点)
 START WITH SID='dc=com'

 

Oracle注意区分Prior 后遍历的方向

 

 

 

0
0
分享到:
评论

相关推荐

    SQL SERVER 安装ORACLE provider for OLE DB 的连接服务驱动

    6. **注意事项**:在实际操作中,还需要确保操作系统和SQL Server版本与Oracle Provider兼容,并且安装过程中遵循Oracle的许可协议。"readme.txt"文件通常包含关于安装的额外信息和警告,应仔细阅读。 通过以上步骤...

    SqlServer表结构转oracle表结构

    7. **注意事项**:转换过程中需要注意兼容性问题,如SQL Server特有的特性(如clr存储过程)在Oracle中可能不支持。此外,数据迁移不仅仅是结构的迁移,还需考虑数据的一致性和完整性,避免因迁移导致的数据丢失。 ...

    常见数据库db2,sqlserver,Oracle比较

    ### 常见数据库db2,sqlserver,Oracle比较 #### 开放性 - **SQL Server**:只能在Windows平台上运行,这意味着对于操作系统的选择极为有限。由于Windows平台本身的设计更偏向于桌面应用,如Windows 9X系列,它们...

    SQLserver2012链接Oracle数据库操作说明.docx

    - **驱动兼容性**:确认所使用的 OLEDB 驱动与 SQL Server 和 Oracle 数据库版本兼容。 - **安全设置**:注意保护敏感信息(如用户名和密码)的安全性。 #### 六、总结 通过上述步骤,我们可以实现 SQL Server ...

    [SSIS DEMO] Oracle與SQL Server異質資料轉換

    3. **编辑OLE DB Source和SQL Server Destination的高级属性**: - 根据需要调整`OLE DB Source`和`SQL Server Destination`的高级属性,以满足特定的数据转换需求。 4. **运行数据转换**: - 最后,执行SSIS包以...

    oracle, db2, mysql. sqlserver2000的驱动jar包

    在项目中使用这些驱动jar包时,需要注意版本兼容性问题。不同的数据库版本可能需要对应版本的驱动,否则可能会导致连接失败或其他错误。同时,为了提高安全性,建议定期更新这些驱动,以获取最新的安全补丁和功能...

    支持 oracle mysql sql server db2等数据库

    【标题】:“支持Oracle MySQL SQL Server DB2等数据库”意味着这款工具具备跨平台数据库管理的能力。这涵盖了市面上常见的四大关系型数据库管理系统(RDBMS),包括Oracle数据库、MySQL开源数据库、Microsoft SQL ...

    oracle+db2+sqlserver驱动

    在IT行业中,数据库管理系统(DBMS)是至关重要的组成部分,其中Oracle、IBM DB2和Microsoft SQL Server是最常用的关系型数据库系统。这些系统都需要相应的驱动程序来实现与应用程序的交互,通常是以Java Archive...

    sqlserver2005和oracle之间的导入导出

    ### SQL Server 2005与Oracle数据库之间的数据迁移 #### 概述 在不同的数据库管理系统之间进行数据迁移是一项常见的需求,特别是在企业级应用中。本文将详细介绍如何在Oracle数据库和SQL Server 2005之间进行数据...

    SQL Server 如何通过链接服务器访问 Oracle

    但请注意,由于Oracle和SQL Server的数据类型、语法差异,可能需要进行一些转换或适配工作,以确保兼容性和正确性。此外,跨数据库查询时要注意性能监控,避免对任何一方数据库造成过大的负担。

    sqlserver2008链接ORACLE服务器驱动.rar

    本资源"sqlserver2008链接ORACLE服务器驱动.rar"正是为了解决这个问题,提供了SQL Server 2008连接到Oracle数据库所需的驱动程序和安装指南。 首先,我们要明白的是,SQL Server 2008本身并不直接支持Oracle数据库...

    在SQL Server 2005中连接Oracle,完成查询、插入操作

    在SQL Server 2005中,我们需要安装Microsoft SQL Server 2005 Feature Pack,其中包含SQL Server 2005 OLE DB提供程序,这个组件使得SQL Server能够与Oracle进行通信。同时,确保Oracle客户端软件已经安装在服务器...

    sqlserver與oracle互連的幾種方式

    在SQL Server与Oracle互连的场景中,常见的方法包括但不限于ODBC(开放式数据库连接)、OLE DB、链接服务器(Linked Server)、异构连接服务(Heterogeneous Services)以及通过T-SQL的OPENQUERY等。 1. **ODBC ...

    sqlserver导入oracle数据库的数据

    在此过程中,你可能会遇到数据类型不匹配的问题,这时需要根据Oracle数据库的兼容性进行数据类型转换。 点击“下一步”进入“目标”设置。选择“Oracle Provider for OLE DB”作为目标提供程序,输入Oracle服务器名...

    oracle数据库导入数据到sql server数据库操作步骤

    在这个过程中,数据源选择“Oracle Provider for OLE DB”,这使得SQL Server能够通过OLE DB接口访问Oracle数据库。输入在第一步中相同的用户名和密码,并勾选“允许保存密码”。数据源名称应与第一步配置的ODBC数据...

    sql server通过连接服务访问oracle得到的数据不全的解放方法

    在SQL Server中,通过链接服务器访问Oracle数据库时可能会遇到数据不全或报错的问题,这主要是由于版本不兼容或者驱动程序支持不足导致的。本文将详细介绍两种可能的解决方案。 首先,我们来理解一下问题的根源。当...

    四大数据库的比较(SQL_Server、Oracle、Sybase和DB2)

    ### 四大数据库的比较(SQL Server、Oracle、Sybase和DB2) #### 开放性 **SQL Server:** 仅限于Windows操作系统上运行,缺乏跨平台能力。这对于那些希望在不同操作系统之间灵活迁移的企业来说可能是一个限制因素...

    Oracle转换SqlServer

    2. **调整数据类型映射**:如果Oracle中的某些数据类型与SqlServer不兼容,可以在此步骤中手动编辑数据类型映射。 #### 四、常见问题及解决方法 在实际操作过程中,可能会遇到以下问题及其解决方案: 1. **主键与...

    migrate oracle to sql server 3008

    《Oracle到SQL Server 2008迁移指南》是一份由DB Best Technologies公司编写的白皮书,旨在帮助用户理解并执行从Oracle数据库到SQL Server 2008的迁移过程。该文档主要适用于那些计划或正在考虑将Oracle数据库系统...

Global site tag (gtag.js) - Google Analytics