Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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 8i伪列的数据类型_Sql_Oracle_Sqldatatypes_Oracle8i - Fatal编程技术网

Sql 从“双”选项中选择时,是否可以指定Oracle 8i伪列的数据类型

Sql 从“双”选项中选择时,是否可以指定Oracle 8i伪列的数据类型,sql,oracle,sqldatatypes,oracle8i,Sql,Oracle,Sqldatatypes,Oracle8i,在Oracle中,可以生成伪列和伪表,但不确定这是否是一个官方术语: (SELECT 'abc' AS pseudo_col_1, 123 AS pseudo_col_2 FROM dual) pseudo_table 在指定pseudo_col_1和/或pseudo_col_2的数据类型时,我也希望这样做。 以下内容似乎适用于Oracle 11g,其中pseudo_col_2被指定为CLOB数据类型: (SELECT 'abc' AS pseudo_col_1, TO_CLOB(123)

在Oracle中,可以生成伪列和伪表,但不确定这是否是一个官方术语:

(SELECT 'abc' AS pseudo_col_1,  123 AS pseudo_col_2 FROM dual) pseudo_table
在指定pseudo_col_1和/或pseudo_col_2的数据类型时,我也希望这样做。 以下内容似乎适用于Oracle 11g,其中pseudo_col_2被指定为CLOB数据类型:

(SELECT 'abc' AS pseudo_col_1,  TO_CLOB(123) AS pseudo_col_2 FROM dual) pseudo_table
但是,我需要在Oracle8i上实现相同的结果,它没有tou_CLOB函数

免责声明:我知道8i已经过时,无需对此进行评论,因为很遗憾,我对此没有任何控制权。

您可以转换为您想要的类型:

SELECT cast('abc' as varchar2(255)) AS pseudo_col_1,
       cast(123 as decimal(10, 2)) AS pseudo_col_2
FROM dual;

但是你不能投CLOB。@AlexPoole。当我回答时,它没有指定CLOB。有意思。抱歉,没有在问题标题中指定CLOB,但是在问题正文中指定了CLOB。无论如何,谢谢你的回答。CAST可能是以后版本中的一个解决方案。我不确定CLOB支持在8年是否像现在这样成熟。为什么需要显式更改数据类型?实际上,我并不想更改数据类型,而是在生成伪列时指定数据类型,类似于在C和其他语言中显式声明变量的类型。但是,进一步研究文档时,双表包含一个VARCHAR2列。所以我猜我基于DUAL创建的任何伪列都将保持为VARCHAR2类型,除非,如您所述,我明确地更改了数据类型,这显然是我使用TO_CLOB所做的。有没有办法从头开始生成伪表/伪列,或者来自DUAL以外的表,该表将包含DUAL的VARCHAR2以外的数据类型?DUAL表中列的数据类型对查询结果并不重要。您可以选择1作为双精度输入,并获得一个数字列。如果你能解释一下为什么要这样做,也许会有所帮助,尽管戈登·林诺夫下面的答案可能有用。