存储过程,处理可能的空值

时间:2019-04-09 20:12:55

标签: sql stored-procedures db2

我有一个非常简单的存储过程,当两个参数都从表单输入中发送值时,该存储过程目前可以完美地工作。

但是,我需要弄清楚如果值为空,那么IN_NUMBER应该做什么,因为目标表中的该列设置为可空。似乎过程本身只是在失败,因为它正在等待一个值。

我应该改变什么?

IN参数:

IN_NAME 
IN_NUMBER

常规:

P1 : BEGIN ATOMIC

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

END P1 

2 个答案:

答案 0 :(得分:1)

如果您要处理NULL并将其替换为其他值,请使用NVL(IN_NUMBER, 0)-您可以将0换成其他任意数目的课程(我假设这是整数)。 / p>

答案 1 :(得分:1)

示例:

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错误?