Oracle和Sybase兼容性创建表new_table为

问题描述:

我想写一个SQL查询需要在Sybase和Oracle数据库上兼容。查询如下所示:Oracle和Sybase兼容性创建表new_table为

SELECT * 
    INTO new_table 
    FROM other_table 

此查询在Sybase数据库上运行良好,但在Oracle数据库上运行良好。我发现甲骨文的等价物:

CREATE table new_table AS 
SELECT * 
    FROM other_table 

是否有写第三查询会做同样的,并且可以在Sybase和Oracle数据库上执行的方法吗?

如您所见,Oracle支持INTO,但不像Sybase/SQL Server那样使用它。同样,Sybase不支持Oracle对CREATE TABLE语法的扩展。

创建系统之间&导入数据的表的最可靠的方法是使用两个语句:

CREATE TABLE new_table (
    ...columns... 
) 

INSERT INTO new_table 
SELECT * 
    FROM OLD_TABLE 

即使这样,语法是不同的,因为Oracle要求每个语句由分号分隔当TSQL不。

创建表&从另一个表中导入所有数据对我来说是一个红旗 - 这不是您在生产系统的存储过程中要做的事情。 TSQL和PLSQL是非常不同的,所以我期望DML变化的单独脚本。

没有可以做你想做的查询。这些环境是非常不同的。

+0

确定。并且知道我需要根据查询结果构建一个新表,您认为有一个查询可以在这两种环境下工作吗? – MartinMoizard 2011-02-17 14:42:08

这是可能的。

SELECT * INTO new_table FROM existing_table; 

感谢