2016-03-17 3 views
0

Я пытаюсь ввести ряд значений в таблице измерения, которую я создал, но я получаю следующее сообщение об ошибке -Преобразование даты в ряд для первичного ключа

ORA-06512: at line 2 
06502. 00000 - "PL/SQL: numeric or value error%s" 
*Cause: An arithmetic, numeric, string, conversion, or constraint error 
      occurred. For example, this error occurs if an attempt is made to 
      assign the value NULL to a variable declared NOT NULL, or if an 
      attempt is made to assign an integer larger than 99 to a variable 
      declared NUMBER(2). 
*Action: Change the data, how it is manipulated, or how it is declared so 
      that values do not violate constraints. 
No Erro 

Я пытаюсь преобразовать введите дату из формата DD/MM/YYYY в число, которое затем может выступать в качестве первичного ключа для таблицы измерений. Кажется, это неправильный формат. Может кто-нибудь пролить некоторый свет на это

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')); 

Благодаря

ответ

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, так как это проще сортировать. Однако я бы сохранил дату в качестве даты.

+0

, который отлично работает, спасибо Bonist – Grabdegood

Смежные вопросы