SQL查询在Oracle where子句中

Hat*_*tik 2 sql oracle where

我有3行的表ID,GROUP_NAME并且PARENT_GROUP_ID表本身提供了一个基本的组 - 子组功能.示例是:如果我的组名是 - "第一组",ID = 1,并且它有一个名为"Sub Group"的子组,ID = 2,PARENT_GROUP_ID = 1; 这意味着Sub Group是ID = 1的组的子组.我的问题是我有一个过程,它根据参数加载数据(pn_parent_group_id是一个数字)

CURSOR c1 IS
SELECT * FROM GROUPS WHERE PARENT_GROUP_ID = pn_parent_group_id;
Run Code Online (Sandbox Code Playgroud)

pn_parent_group_id当我向进程发送任何子进程时,此查询工作正常,并且它找到所有必需的子组,但是当我向pn_parent_group_id发送NULL时,它工作错误,因为它应返回没有parent_group_id的那些(仅表示父组).我知道我的解释是缺乏的,但我希望你有这个想法,任何帮助将不胜感激!

APC*_*APC 5

Null永远不会等于null.因此,您需要为游标添加null的显式测试.

CURSOR c1 IS
    SELECT * FROM GROUPS 
     WHERE PARENT_GROUP_ID = pn_parent_group_id
     or (pn_parent_group_id is null and parent_group_id is null);
Run Code Online (Sandbox Code Playgroud)