2015-09-23 2 views
-3

Просьба пояснить использование функции NVL.- это функция nvl, основанная на ненулевом ограничении

Мне нужно вставить значение, 999999, если значение не найдено из SELECT запроса, но колонке таблицы, где Вставляется значение имеет тип NOT NULL, и стол, на котором мы делаем запрос на выборку, чтобы получить значение также относится к типу NOT NULL.

ИСТОЧНИК (используется для получения значений столбцов для загрузки в T_DATA таблицу)

COLUMN_NAME DATA_TYPE NULLABLE COLUMN_ID 
SRC_ID  NUMBER  No   1  

T_DATA таблицу (загрузить таблицу)

COLUMN_NAME DATA_TYPE NULLABLE 
SRC_ID  NUMBER  No 

INSERT запроса:

INSERT INTO T_DATA 
(select (SELECT NVL(SRC_ID,999999) FROM SOURCE 
    WHERE SRC_DESC = LTRIM(TABLE_ID)), class_code,line_number,sysdate 
    from T_VB_DATA); 

Поскольку SRC_ID IN TABLE - NOT NULL, даже если я использую NVL функция, она ничего не собирается делать. Итак, могу ли я предположить, что он должен принять значение NULL?

Столбец, когда он вставлен в таблицу t_data, не может быть NULL.

+0

Пожалуйста, не кричите на нас, спасибо ... – Siyual

+0

Если вы запрашиваете таблицу t_vb_data для нулевых значений, вы найдете ее? Кроме того, ваш запрошенный запрос имеет синтаксические ошибки. –

ответ

0

Похоже, вы используете функцию NVL правильно. Основываясь на вашем описании, похоже, что вам действительно не нужно использовать функцию NVL, потому что столбец SRC_ID в SOURCE никогда не будет иметь NULL. Кроме того, целевая таблица, загружаемая T_DATA, может иметь ограничение NOT NULL, потому что запрошенный пример вставки запроса не будет вставлять значения null в этот столбец.

При попытке выполнить инструкцию insert появляется сообщение об ошибке? Или вы просто работаете над деталями дизайна и хотите получить подтверждение, что вы понимаете функцию NVL и как убедиться, что вы вставляете значение по умолчанию вместо null?

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