本篇内容主要讲解“数据库中的记录类型判断非空的办法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“数据库中的记录类型判断非空的办法是什么”吧!

我创建了如下的包:

CREATEORREPLACEPACKAGEplch_pkgISTYPEinfo_rtISRECORD(nameVARCHAR2(100),dobDATE);TYPEinfo_plus_rtISRECORD(group_nameVARCHAR2(100),group_totalNUMBER,more_infoinfo_rt);END;/

哪些选项在执行后将会显示 "NOT NULL"?

(A)

DECLAREl_my_recordplch_pkg.info_plus_rt;BEGINl_my_record.group_name:='OracleBloggers';l_my_record.more_info.dob:=SYSDATE;IFl_my_recordISNOTNULLTHENDBMS_OUTPUT.put_line('NOTNULL');ELSEDBMS_OUTPUT.put_line('NULL');ENDIF;END;/

SQL>DECLARE2l_my_recordplch_pkg.info_plus_rt;3BEGIN4l_my_record.group_name:='OracleBloggers';5l_my_record.more_info.dob:=SYSDATE;67IFl_my_recordISNOTNULL8THEN9DBMS_OUTPUT.put_line('NOTNULL');10ELSE11DBMS_OUTPUT.put_line('NULL');12ENDIF;13END;14/DECLAREl_my_recordplch_pkg.info_plus_rt;BEGINl_my_record.group_name:='OracleBloggers';l_my_record.more_info.dob:=SYSDATE;IFl_my_recordISNOTNULLTHENDBMS_OUTPUT.put_line('NOTNULL');ELSEDBMS_OUTPUT.put_line('NULL');ENDIF;END;ORA-06550:第7行,第7列:PLS-00306:调用'ISNOTNULL'时参数个数或类型错误ORA-06550:第7行,第4列:PL/SQL:StatementignoredSQL>

(B)

DECLAREl_my_recordplch_pkg.info_plus_rt;BEGINl_my_record.group_name:='OracleBloggers';l_my_record.more_info.dob:=SYSDATE;IFl_my_record.group_nameISNOTNULLORl_my_record.group_totalISNOTNULLORl_my_record.more_infoISNOTNULLTHENDBMS_OUTPUT.put_line('NOTNULL');ELSEDBMS_OUTPUT.put_line('NULL');ENDIF;END;/

SQL>DECLARE2l_my_recordplch_pkg.info_plus_rt;3BEGIN4l_my_record.group_name:='OracleBloggers';5l_my_record.more_info.dob:=SYSDATE;67IFl_my_record.group_nameISNOTNULL8ORl_my_record.group_totalISNOTNULL9ORl_my_record.more_infoISNOTNULL10THEN11DBMS_OUTPUT.put_line('NOTNULL');12ELSE13DBMS_OUTPUT.put_line('NULL');14ENDIF;15END;16/DECLAREl_my_recordplch_pkg.info_plus_rt;BEGINl_my_record.group_name:='OracleBloggers';l_my_record.more_info.dob:=SYSDATE;IFl_my_record.group_nameISNOTNULLORl_my_record.group_totalISNOTNULLORl_my_record.more_infoISNOTNULLTHENDBMS_OUTPUT.put_line('NOTNULL');ELSEDBMS_OUTPUT.put_line('NULL');ENDIF;END;ORA-06550:第9行,第10列:PLS-00306:调用'ISNOTNULL'时参数个数或类型错误ORA-06550:第7行,第4列:PL/SQL:StatementignoredSQL>

(C)

DECLAREl_my_recordplch_pkg.info_plus_rt;BEGINl_my_record.group_name:='OracleBloggers';l_my_record.more_info.dob:=SYSDATE;IFl_my_record.group_nameISNOTNULLORl_my_record.group_totalISNOTNULLORl_my_record.more_info.nameISNOTNULLORl_my_record.more_info.dobISNOTNULLTHENDBMS_OUTPUT.put_line('NOTNULL');ELSEDBMS_OUTPUT.put_line('NULL');ENDIF;END;/

SQL>DECLARE2l_my_recordplch_pkg.info_plus_rt;3BEGIN4l_my_record.group_name:='OracleBloggers';5l_my_record.more_info.dob:=SYSDATE;67IFl_my_record.group_nameISNOTNULL8ORl_my_record.group_totalISNOTNULL9ORl_my_record.more_info.nameISNOTNULL10ORl_my_record.more_info.dobISNOTNULL11THEN12DBMS_OUTPUT.put_line('NOTNULL');13ELSE14DBMS_OUTPUT.put_line('NULL');15ENDIF;16END;17/NOTNULLPL/SQLproceduresuccessfullycompletedSQL>

(D)

CREATEORREPLACEFUNCTIONplch_not_null_rec(rec_inINplch_pkg.info_plus_rt)RETURNBOOLEANISBEGINRETURNrec_in.group_nameISNOTNULLORrec_in.group_totalISNOTNULLORrec_in.more_info.nameISNOTNULLORrec_in.more_info.dobISNOTNULL;END;/DECLAREl_my_recordplch_pkg.info_plus_rt;BEGINl_my_record.group_name:='OracleBloggers';l_my_record.more_info.dob:=SYSDATE;IFplch_not_null_rec(l_my_record)THENDBMS_OUTPUT.put_line('NOTNULL');ELSEDBMS_OUTPUT.put_line('NULL');ENDIF;END;/

SQL>CREATEORREPLACEFUNCTIONplch_not_null_rec(rec_inINplch_pkg.info_plus_rt)2RETURNBOOLEAN3IS4BEGIN5RETURNrec_in.group_nameISNOTNULL6ORrec_in.group_totalISNOTNULL7ORrec_in.more_info.nameISNOTNULL8ORrec_in.more_info.dobISNOTNULL;9END;10/FunctioncreatedSQL>DECLARE2l_my_recordplch_pkg.info_plus_rt;3BEGIN4l_my_record.group_name:='OracleBloggers';5l_my_record.more_info.dob:=SYSDATE;67IFplch_not_null_rec(l_my_record)8THEN9DBMS_OUTPUT.put_line('NOTNULL');10ELSE11DBMS_OUTPUT.put_line('NULL');12ENDIF;13END;14/NOTNULLPL/SQLproceduresuccessfullycompletedSQL>

答案CD对记录类型不能使用ISNOTNULL判断,否则会出现:PLS-00306:wrongnumberortypesofargumentsincallto'ISNOTNULL'这导致AB出现异常。StevenFeuerstein建议你采用D的做法以便于重用代码。

到此,相信大家对“数据库中的记录类型判断非空的办法是什么”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!