Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle Rownum cast_Sql_Oracle_Rownum - Fatal编程技术网

Sql Oracle Rownum cast

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) 我无法给出完整查询和列

我正在尝试创建一个复杂的视图,该视图将通过MS-SQL服务器中的链接服务器进行访问。我遇到的问题是,查询使用ROWNUM生成ROWID

生成的ROWID的数据类型是NUMBER,但这显然给我带来了一个问题,如果我能在这里将其转换为NUMBERinsert大小,一切都会很好。但我不确定这是否可能

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)