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

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

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

我创建了如下的包:

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)

相关推荐

  • 如何将Ethereum -web3.js引入weex

    技术怎么在weex 中的引入Ethereum -web3.js怎么在weex 中的引入Ethereum -web3.js ,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以

    攻略 2021年12月14日
  • 2021-2022-1 20211308《信息安全专业导论》第十周学习总结

    技术2021-2022-1 20211308《信息安全专业导论》第十周学习总结 2021-2022-1 20211308《信息安全专业导论》第十周学习总结2021-2022-1 20211308《信息安

    礼包 2021年11月27日
  • 页码设置怎么从第三页开始,页码从第三页开始怎么设置

    技术页码设置怎么从第三页开始,页码从第三页开始怎么设置1页码设置怎么从第三页开始、点击【插入】→【页眉和页脚】→【页码】-【页面底端】选择一种样式的页码。文档开始出现页码,但是是从第一页开始的。2、将光标定位到第二页文章

    生活 2021年10月29日
  • DNS访问原理是什么

    技术DNS访问原理是什么DNS访问原理是什么,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。前两天遇到一个面试的小伙伴,他说面试官和他聊得很投机,无意中谈

    攻略 2021年12月3日
  • 一寸照片尺寸多少厘米,一寸照片到底是多少厘米

    技术一寸照片尺寸多少厘米,一寸照片到底是多少厘米一寸照片对应的尺寸是2.5厘米*3.5厘米,其中宽度为2.5厘米,长度为3.5厘米一寸照片尺寸多少厘米。身份证和体检表等多采用小一寸的尺寸22×32mm,第二代身份证采用的

    生活 2021年10月20日
  • catboost特征学习(catboost详细使用教程)

    技术怎么使用CatBoost进行快速梯度提升本篇文章给大家分享的是有关怎么使用CatBoost进行快速梯度提升,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

    攻略 2021年12月21日