3

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

生成的 ROWID 的数据类型为 NUMBER,但这显然给我带来了问题,如果我能把它变成 NUMBER(在此处插入大小),一切都会好起来的。但我不确定这是否可能。

CREATE OR REPLACE FORCE VIEW EXAMPLE ("ROW_ID")
AS
SELECT ROWNUM ROW_ID,
FROM
(SUB-QUERY)

我无法提供完整的查询和列名(工作限制),但这里是 SQL Developer 中查询返回的列类型

列类型

我认为问题在于返回的 ROWNUM 数据类型是 Number 而不是 NUMBER(20) 或类似长度,并且这种交叉是我在链接服务器错误方面看到的问题,但如果有人知道不同,请告诉我;)

4

2 回答 2

6

您可以使用强制转换功能:cast( rownum AS NUMBER(10)) as row_id

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)
于 2012-08-13T13:39:13.413 回答
0

不是一个很好的解决方案,但通过删除 rownum 并从不同的角度解决问题,我已经删除了错误。

于 2012-08-14T10:25:53.303 回答