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

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

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

我创建了如下的包:

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)

相关推荐

  • 重用预训练的嵌入

    技术重用预训练的嵌入 重用预训练的嵌入重用预训练的嵌入
    TensorFlow Hub项目可以轻松地在自己的模型中重用经过预训练的模型组件。这些模型组件称为模块。只需要浏览TF Hub储存库,就能找到需要

    礼包 2021年12月20日
  • 7272好看动漫排行,你心目中的动漫排行榜前十名

    技术7272好看动漫排行,你心目中的动漫排行榜前十名1.机动战士高达00 2.新世纪福音战士
    3.铁臂阿童木
    4.多拉A梦
    5.名侦探柯南 在介绍点动漫给你 《死神》(打斗)
    《海贼王》(励志,打斗)
    《火影忍

    生活 2021年10月26日
  • 一步一步教你画桃花,如何画桃花或春天开的花

    技术一步一步教你画桃花,如何画桃花或春天开的花春天的画春天的花朵阳春三月,春光明媚,桃花“争开不待叶”盛开于枝头.它芬菲烂漫一步一步教你画桃花、抚媚鲜丽,如一片片红霞,与绿树婆婆的垂柳相衬映,形成了桃红柳绿、柳暗花明的春

    生活 2021年10月23日
  • 如何把mysqld压测到崩溃重启

    技术如何把mysqld压测到崩溃重启小编给大家分享一下如何把mysqld压测到崩溃重启,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、压测环境工具准备:centos7.5
    sysbench2.

    攻略 2021年10月26日
  • 蛋糕不蓬松的原因,蛋糕做出来会塌不泡是什么原因

    技术蛋糕不蓬松的原因,蛋糕做出来会塌不泡是什么原因蛋糕的膨发情况就与蛋白打发状态息息相关。蛋糕烤出来回缩蛋糕不蓬松的原因、总是膨发不起来是因为蛋白打发不到位,所以就算加了泡打粉也膨胀不起来。蛋糕塌陷!大家都知道热胀冷缩的

    生活 2021年10月30日
  • 为什么采用nginx+lvs的架构

    技术为什么采用nginx+lvs的架构为什么采用nginx+lvs的架构,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。nginx和lvs都作为反向代理的代表

    攻略 2021年10月19日