2015-08-21 90 views
0

我可以有一个变量输入作为数字的别名吗?定义一个变量

甲骨文转换时,我表明NUMBER它甚至CHAR

底部的三个都很好,因为他们是在'

DEFINE RecordMonth = 201401 (NUMBER) 
DEFINE BeginDate = 1/01/14 
DEFINE EndDate  = 1/31/14 
DEFINE YearMonth = 2014-01 


CREATE OR REPLACE VIEW UTIL_REPORT AS 
(SELECT 
&RecordMonth as RECORD_MONTH 
+1

你显示的内容将创建一个以'record_month'列作为数字的视图。在SQL \ * Plus中,即使您实际上在定义中具有“(NUMBER)”部分,也可以工作,因为它被忽略。在SQL Developer中,'(NUMBER)'用于替换,所以它出错(ORA-00923)。如果您看到其他内容,您使用的是哪个客户端和版本,您是否可以编辑该问题以准确显示您所做的以及看到的内容? –

+0

TOAD 11.2每次运行它时都会给我一个char值。 – Tinkinc

回答

0

甲骨文单证说:


DEFINE

DEF [INE] [variable] | [variable = text]

指定用户变量并为其分配CHAR值,或列出单个变量或所有变量的值和变量类型。


所以“define”命令将值保存为字符。

但是你可以在你的代码中使用TO_NUMBER转换为数字,这里是全成的保存字符(定义值)在数量上设置的例子:

set serveroutput on 

DEFINE RecordMonth = 201401 


declare 
Record_Month number; 
begin 
    select to_number(&RecordMonth) as RecordMonth 
    into Record_Month -- number variable 
    from dual; 
    dbms_output.put_line(Record_Month); 
end; 

结果是:

201401 
PL/SQL procedure successfully completed