如果我有这样的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_name
和last_name
变量的值。
如何在上述过程中对此进行说明,因为我不希望查询的first_name
子句中的last_name
或Where
,如果这些变量中的任何一个没有价值。
答案 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;