Как назначить значение свойства по умолчанию для параметров IN в хранимой процедуре teradata - PullRequest
0 голосов
/ 12 сентября 2018

Необходимо разработать хранимую процедуру для вставки значений в таблицу. Предположим, что в таблице 5 столбцов, где не все значения столбцов являются обязательными для пользовательских данных. DDL для хранимой процедуры будет выглядеть как

СОЗДАНИЕ ИЛИ ЗАМЕНА ПРОЦЕДУРЫ UPDATE_EMPLOYEE_INFO

     (IN EMPLOYEE_NUMBER CHAR(10),
      IN EMP_DEPT CHAR(3),
      IN PHONE_NUMBER CHAR(4),
      IN JOB CHAR(8),
      IN ELEVEL SMALLINT)

Начало

--- Вставьте запрос сюда ---

Конец

Эту процедуру можно выполнить с помощью команд

CALL UPDATE_EMPLOYEE_INFO (1, '', 1234567890, 'admin', '')

Однако столбцы EMP_DEPT и ELEVEL не являются обязательными полями для значений. Как я могу упомянуть в вызове хранимой процедуры, чтобы принять значения по умолчанию, как показано ниже.

CALL UPDATE_EMPLOYEE_INFO (1, DEFAULT, 1234567890, 'admin', DEFAULT).

В принципе, я хочу добиться чего-то подобного в ссылке, используя teradata - https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_72/sqlp/rbafyprocdefaults.htm

1 Ответ

0 голосов
/ 12 сентября 2018

Нет дополнительных параметров. Все параметры обязательны. Поэтому вам, вероятно, придется передать необязательные параметры как нулевые, а затем записать некоторую условную логику в свой хранимый процесс на основе того, является ли параметр пустым.

Например:

CALL UPDATE_EMPLOYEE_INFO(1,NULL,1234567890,'admin',NULL)

Документация Teradata гласит:

Правила задания параметров ввода и вывода

Аргументы вызова, состоящие из входных и выходных параметров, должны быть представлен с заявлением CALL. Никакие значения параметров по умолчанию не могут быть определен во время создания процедуры; CALL возвращает ошибку если требуемые аргументы вызова не указаны.

https://info.teradata.com/HTMLPubs/DB_TTU_16_00/index.html#page/SQL_Reference/B035-1146-160K/cum1472240816735.html

...