数据库中的记录类型判断非空的办法是什么

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

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

我创建了如下的包:

CREATEORREPLACEPACKAGEplch _ pkg

TYPEinfo _ rtISRECORD

名称可变字符2(100)

,dobDATE

);

TYPEinfo _ plus _ rtISRECORD

group_nameVARCHAR2(100)

,group_totalNUMBER

,更多信息信息

);

结束

/哪些选项在执行后将会显示不为空?

(一)

声明

l _ my _ record plch _ pkginfo _ plus _ rt

开始

我的记录。group _ name :=' OracleBloggers ';

我的记录。更多信息。DOB :=SYSADATE

IFl_my_recordISNOTNULL

然后

DBMS _输出。put _ line(' NOTTNULL ');

其他

数据库管理系统_输出。put _ line(' NULL ');

ENDIF

结束

/SQLDCLEARE

2l _ my _ record plch _ pkg。info _ plus _ rt

3开始

4l _ my _ record。group _ name :=' OracleBloggers ';

5l _ my _ record。更多信息。DOB :=SYSADATE

6

7IFl_my_recordISNOTNULL

8之后

9 DBMS _ Output。put _ line(' NOTTNULL ');

10ELSE

11DBMS_OUTPUT.put_line('空');

12ENDIF

13结束

14/

声明

l_

my_record   plch_pkg.info_plus_rt;
BEGIN
   l_my_record.group_name := 'Oracle Bloggers';
   l_my_record.more_info.dob := SYSDATE;
   IF l_my_record IS NOT NULL
   THEN
      DBMS_OUTPUT.put_line ('NOT NULL');
   ELSE
      DBMS_OUTPUT.put_line ('NULL');
   END IF;
END;
ORA-06550: 第 7 行, 第 7 列: 
PLS-00306: 调用 'IS NOT NULL' 时参数个数或类型错误
ORA-06550: 第 7 行, 第 4 列: 
PL/SQL: Statement ignored
SQL>

(B)

DECLARE
   l_my_record   plch_pkg.info_plus_rt;
BEGIN
   l_my_record.group_name := 'Oracle Bloggers';
   l_my_record.more_info.dob := SYSDATE;
   IF    l_my_record.group_name IS NOT NULL
      OR l_my_record.group_total IS NOT NULL
      OR l_my_record.more_info IS NOT NULL
   THEN
      DBMS_OUTPUT.put_line ('NOT NULL');
   ELSE
      DBMS_OUTPUT.put_line ('NULL');
   END IF;
END;
/
SQL> DECLARE
  2     l_my_record   plch_pkg.info_plus_rt;
  3  BEGIN
  4     l_my_record.group_name := 'Oracle Bloggers';
  5     l_my_record.more_info.dob := SYSDATE;
  6  
  7     IF    l_my_record.group_name IS NOT NULL
  8        OR l_my_record.group_total IS NOT NULL
  9        OR l_my_record.more_info IS NOT NULL
 10     THEN
 11        DBMS_OUTPUT.put_line ('NOT NULL');
 12     ELSE
 13        DBMS_OUTPUT.put_line ('NULL');
 14     END IF;
 15  END;
 16  /
DECLARE
   l_my_record   plch_pkg.info_plus_rt;
BEGIN
   l_my_record.group_name := 'Oracle Bloggers';
   l_my_record.more_info.dob := SYSDATE;
   IF    l_my_record.group_name IS NOT NULL
      OR l_my_record.group_total IS NOT NULL
      OR l_my_record.more_info IS NOT NULL
   THEN
      DBMS_OUTPUT.put_line ('NOT NULL');
   ELSE
      DBMS_OUTPUT.put_line ('NULL');
   END IF;
END;
ORA-06550: 第 9 行, 第 10 列: 
PLS-00306: 调用 'IS NOT NULL' 时参数个数或类型错误
ORA-06550: 第 7 行, 第 4 列: 
PL/SQL: Statement ignored
SQL>

(C)

DECLARE
   l_my_record   plch_pkg.info_plus_rt;
BEGIN
   l_my_record.group_name := 'Oracle Bloggers';
   l_my_record.more_info.dob := SYSDATE;
   IF    l_my_record.group_name IS NOT NULL
      OR l_my_record.group_total IS NOT NULL
      OR l_my_record.more_info.name IS NOT NULL
      OR l_my_record.more_info.dob IS NOT NULL
   THEN
      DBMS_OUTPUT.put_line ('NOT NULL');
   ELSE
      DBMS_OUTPUT.put_line ('NULL');
   END IF;
END;
/
SQL> DECLARE
  2     l_my_record   plch_pkg.info_plus_rt;
  3  BEGIN
  4     l_my_record.group_name := 'Oracle Bloggers';
  5     l_my_record.more_info.dob := SYSDATE;
  6  
  7     IF    l_my_record.group_name IS NOT NULL
  8        OR l_my_record.group_total IS NOT NULL
  9        OR l_my_record.more_info.name IS NOT NULL
 10        OR l_my_record.more_info.dob IS NOT NULL
 11     THEN
 12        DBMS_OUTPUT.put_line ('NOT NULL');
 13     ELSE
 14        DBMS_OUTPUT.put_line ('NULL');
 15     END IF;
 16  END;
 17  /
NOT NULL
PL/SQL procedure successfully completed
SQL>

(D)

CREATE OR REPLACE FUNCTION plch_not_null_rec (rec_in IN plch_pkg.info_plus_rt)
   RETURN BOOLEAN
IS
BEGIN
   RETURN    rec_in.group_name IS NOT NULL
          OR rec_in.group_total IS NOT NULL
          OR rec_in.more_info.name IS NOT NULL
          OR rec_in.more_info.dob IS NOT NULL;
END;
/
DECLARE
   l_my_record   plch_pkg.info_plus_rt;
BEGIN
   l_my_record.group_name := 'Oracle Bloggers';
   l_my_record.more_info.dob := SYSDATE;
   IF plch_not_null_rec (l_my_record)
   THEN
      DBMS_OUTPUT.put_line ('NOT NULL');
   ELSE
      DBMS_OUTPUT.put_line ('NULL');
   END IF;
END;
/
SQL> CREATE OR REPLACE FUNCTION plch_not_null_rec (rec_in IN plch_pkg.info_plus_rt)
  2     RETURN BOOLEAN
  3  IS
  4  BEGIN
  5     RETURN    rec_in.group_name IS NOT NULL
  6            OR rec_in.group_total IS NOT NULL
  7            OR rec_in.more_info.name IS NOT NULL
  8            OR rec_in.more_info.dob IS NOT NULL;
  9  END;
 10  /
Function created
SQL> DECLARE
  2     l_my_record   plch_pkg.info_plus_rt;
  3  BEGIN
  4     l_my_record.group_name := 'Oracle Bloggers';
  5     l_my_record.more_info.dob := SYSDATE;
  6  
  7     IF plch_not_null_rec (l_my_record)
  8     THEN
  9        DBMS_OUTPUT.put_line ('NOT NULL');
 10     ELSE
 11        DBMS_OUTPUT.put_line ('NULL');
 12     END IF;
 13  END;
 14  /
NOT NULL
PL/SQL procedure successfully completed
SQL>
答案 CD
对记录类型不能使用IS NOT NULL判断,否则会出现:
PLS-00306: wrong number or types of arguments in call to 'IS NOT NULL'
这导致AB出现异常。
Steven Feuerstein建议你采用D的做法以便于重用代码。

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

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/77268.html

(0)

相关推荐

  • 离职后公积金可以全部取出来吗,辞职后能全部提取公积金吗

    技术离职后公积金可以全部取出来吗,辞职后能全部提取公积金吗如果是外地户口员工离职后公积金可以全部取出来吗,在和单位解除劳动关系之后,员工是可以申请提取住房公积金的,而且是可以申请销户提取,是可以将住房公积金账户内所有余额

    生活 2021年10月31日
  • 血瘀是什么原因造成的,气虚血瘀能引发高血压吗

    技术血瘀是什么原因造成的,气虚血瘀能引发高血压吗我是从事公共卫生的医生血瘀是什么原因造成的,我来分享一下我的观点。关注中医的朋友对气虚血瘀这个词应该比较熟悉,它在女性和老年群体中较为常见,主要有乏力、气短、精神萎靡等表现

    生活 2021年10月24日
  • 如何理解PHP命令行选项解析库pflag

    技术如何理解PHP命令行选项解析库pflag这篇文章主要讲解了“如何理解PHP命令行选项解析库pflag”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何理解PHP命令行

    攻略 2021年10月21日
  • python怎么制作自己的一个图形(python图形绘制的代码)

    技术Python 图形绘制详细代码怎么写这篇文章给大家介绍Python 图形绘制详细代码怎么写,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、条形图下面介绍条形图的画法。1.1 代码import

    攻略 2021年12月23日
  • zookeeper提供哪些功能(zookeeper在哪些技术中有用到)

    技术ZooKeeper核心原理及应用场景是什么这篇文章将为大家详细讲解有关ZooKeeper核心原理及应用场景是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为什么会

    攻略 2021年12月24日
  • 如何理解MSSQL数据库后台进程

    技术如何理解MSSQL数据库后台进程本篇文章为大家展示了如何理解MSSQL数据库后台进程,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。与Oracle数据库类似,微软数据库产品MS

    攻略 2021年11月29日