`

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数据库时可能会遇到数据不全或报错的问题,这主要是由于版本不兼容或者驱动程序支持不足导致的。本文将详细介绍两种可能的解决方案。 首先,我们来理解一下问题的根源。当...

    Oracle转换SqlServer

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

    sqlserver利用linkserver链接oracle操作手册

    首先,确保SQL Server版本(本例中为MSSQLServer2008)与Oracle版本(本例中为Oracle11g或其客户端)兼容。这一步是搭建跨数据库连接的基础。 #### 1.2 TNS配置 针对Oracle端,需在`%ORACLE_BASE%\Administrator\...

Global site tag (gtag.js) - Google Analytics