хранимая процедура, обрабатывает возможное нулевое значение - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть очень простая хранимая процедура, которая в настоящее время отлично работает, когда оба параметра отправляют значения из форм ввода.

Тем не менее, мне нужно выяснить, что делать для IN_NUMBER, если значение пустое, поскольку этот столбец в целевой таблице установлен на обнуляемость. Кажется, что сама процедура просто терпит неудачу, потому что она ждет значения.

Что я должен изменить?

В параметрах:

IN_NAME 
IN_NUMBER

Рутинное:

P1 : BEGIN ATOMIC

INSERT INTO schema . postings
( name
, postNumber)
VALUES
( IN_NAME
, IN_NUMBER) ;

END P1 

Ответы [ 2 ]

1 голос
/ 10 апреля 2019

Пример:

create table postings (name varchar(100), postNumber int) in userspace1@

create or replace procedure postings (
  in_name varchar(100)
, in_number int
)
P1 : BEGIN ATOMIC
INSERT INTO postings
( name
, postNumber)
VALUES
( IN_NAME
, IN_NUMBER) ;
END P1@

call postings('myname', null)@

select * from postings@

NAME   POSTNUMBER
----   ----------
myname <null>

Здесь нет никаких проблем, как вы видите.
Какая ошибка db2 у вас есть именно в случае, подобном этому?

1 голос
/ 09 апреля 2019

Если вы хотите обработать NULL и заменить его другим значением, используйте NVL(IN_NUMBER, 0) - вы можете обменять 0 на любое другое число курса (я предполагаю, что это целое число) .

...