Sql Oracle Rownum cast
我正在尝试创建一个复杂的视图,该视图将通过MS-SQL服务器中的链接服务器进行访问。我遇到的问题是,查询使用ROWNUM生成ROWID 生成的ROWID的数据类型是NUMBER,但这显然给我带来了一个问题,如果我能在这里将其转换为NUMBERinsert大小,一切都会很好。但我不确定这是否可能Sql Oracle Rownum cast,sql,oracle,rownum,Sql,Oracle,Rownum,我正在尝试创建一个复杂的视图,该视图将通过MS-SQL服务器中的链接服务器进行访问。我遇到的问题是,查询使用ROWNUM生成ROWID 生成的ROWID的数据类型是NUMBER,但这显然给我带来了一个问题,如果我能在这里将其转换为NUMBERinsert大小,一切都会很好。但我不确定这是否可能 CREATE OR REPLACE FORCE VIEW EXAMPLE ("ROW_ID") AS SELECT ROWNUM ROW_ID, FROM (SUB-QUERY) 我无法给出完整查询和列
CREATE OR REPLACE FORCE VIEW EXAMPLE ("ROW_ID")
AS
SELECT ROWNUM ROW_ID,
FROM
(SUB-QUERY)
我无法给出完整查询和列名的工作约束,但以下是SQL Developer中查询返回的列类型
我认为问题集中在返回的数据类型ROWNUM是Number,而不是NUMBER20或类似的长度,这种交叉是我看到的关于链接服务器错误的问题,但是如果有人知道不同的,请告诉我 您可以使用cast函数:将rownum转换为NUMBER10作为row\u id
这不是一个很好的解决方案,但通过删除rownum并从另一个角度解决问题,我已经消除了错误。这是什么原因?Msg 7356,16级,状态1,第1行链接服务器的OLE DB提供程序MSDAORA LINKEDSERVER为列提供了不一致的元数据。据报告,object VIEWNAME的列ROW_ID编译时序号1在编译时的DBTYPE为130,在运行时的DBTYPE为5。我做到了这一点,但出现了相同的错误,并抱怨ROW_ID的数据类型我使用SQLDeveloper查看了返回的数据类型,这表明数据类型没有更改,仍然设置为NUMBER:s@Deviland你能把你的dml地址寄出去吗。如果您根据我的答案创建视图,SQLDeveloper中会显示什么数据类型?即使您选择强制转换rownum,它也会返回一个数字数据类型。
create or replace view tvv as
select cast( rownum AS NUMBER(10)) as row_id
from all_objects
where rownum < 10;
> desc tvv
Name Null? Typ
----------------- -------- ------------
ROW_ID NUMBER(10)