PL SQL参数列表为空

时间:2016-05-29 03:48:04

标签: sql plsql oracle11g

如果我有这样的PL SQL程序:

Create Or Replace Procedure get_age (first_name varchar(40), last_name varchar(50))

Begin

Select age
From Person
Where first = first_name AND last = last_name;

End;

无法保证用户会传入first_namelast_name变量的值。

如何在上述过程中对此进行说明,因为我不希望查询的first_name子句中的last_nameWhere,如果这些变量中的任何一个没有价值。

2 个答案:

答案 0 :(得分:2)

您的查询现在很好,您可以在WHERE子句中接受空值:

Where (first = first_name OR first_name is NULL) AND (last = last_name OR last_name in NULL);

通过这种方式,用户可以输入名字和姓氏,只输入名字或姓氏,或者两者都不输入结果,并按预期选择结果。

答案 1 :(得分:0)

创建或替换过程get_age(first_name varchar(40)默认为null,last_name varchar(50)默认为null)

开始

从人选择年龄,其中first = nvl(first_name,first)和last = nvl(last_name,last);

END;