我正在尝试将一些值输入到我创建的维度表中,但我一直收到以下错误 -
DECLARE
vstartDate number(10):= to_number(to_char('&StartDate','DDMMYYYY'));
vendDate number(10) := to_number(to_Char('&EndDate','DD/MM/YYYY'));
vdate_key number(10) not null:= to_number(to_Char(sysdate, 'DD/MM/YYYY'));
我正在尝试将输入日期从格式DD / MM / YYYY转换为可以作为维度表的主键的数字。它似乎是错误的格式。任何人都可以对此有所了解
REPLACE
由于
答案 0 :(得分:1)
我不确定为什么你需要主键作为数字;难道你不能把它当作约会吗?
无论如何,问题在于您忘记将传递的字符串转换为日期,然后将其作为数字传回。目前,您正在尝试将字符串转换为字符串,然后确保在尝试将其转换为数字之前将其转换为正斜杠。数字不能包含正斜杠!
以下是我认为您的目标:
DECLARE
vstartDate number(10):= to_number(to_char(to_date('&StartDate','DD/MM/YYYY'), 'YYYYMMDD'));
vendDate number(10) := to_number(to_char(to_date('&EndDate','DD/MM/YYYY'), 'YYYYMMDD'));
vdate_key number(10) not null := to_number(to_Char(sysdate, 'YYYYMMDD'));
请注意,我已将输出数字的格式更改为YYYYMMDD,因为这样更容易排序。不过,我仍然宁愿将日期存储为日期!