2013-07-24 3 views
0

У меня есть таблица, которая имеет два столбца, которые имеют значение по умолчанию varchar. Также у меня есть хранимая процедура, которая принимает 4 значения, два значения varchar и две даты. Я хотел бы сравнить два значения входного varchar со значениями по умолчанию для двух столбцов в таблице, даже если в таблицу не были вставлены строки. Есть ли способ сделать это?Сравнение переменной с значением по умолчанию столбца в процедуре Oracle

Это не работает, но что-то в этом роде.

create or replace 
PROCEDURE TEST_PROC 
(
    TEST_NAME IN VARCHAR2 
, TEST_VERSION IN VARCHAR2 
, TEST_START IN DATE 
, TEST_END IN DATE 
) AS 
BEGIN 

if TEST_NAME = TABLE.COL_1.DEFAULT_VALUE 
AND TEST_VERSION = TABLE.COL_2.DEFAULT_VALUE ... 

ответ

1

Используйте словарь данных, чтобы получить значение по умолчанию для столбцов. Затем объявите переменные в своей процедуре и сравните ввод. Например:

SELECT TABLE_NAME||'.'||COLUMN_NAME, DATA_DEFAULT 
INTO tableVariable, defaultVariable 
FROM ALL_TAB_COLUMNS 
WHERE TABLE_NAME=:myTable 
AND COLUMN_NAME=:myColumn 
AND DATA_DEFAULT IS NOT NULL 

Вы также можете использовать его в качестве курсора и прокрутить его.

+0

Я не могу заставить это работать, когда я помещаю COL_1 вместо COLUMN_NAME, поскольку у вас есть это сообщение, что это недопустимый идентификатор. Есть идеи? – javakid1993

+0

COLUMN_NAME - это столбец в DICTIONARY VIEW. Сравните его с столбцом в таблице. Вот почему я использовал переменные связывания. Например, если таблица, которую вы хотите сравнить, - TABLE_1, а ваш столбец COL_1, это должно быть: WHERE TABLE_NAME = 'TABLE_1' и COLUMN_NAME = 'COL_1' – tilley31

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