|
楼主 |
发表于 2011-10-18 23:15
|
显示全部楼层
2011-10-17
作者: Steven Feuerstein
难度:中
我创建了如下的包:
CREATE OR REPLACE PACKAGE plch_pkg
IS
TYPE info_rt IS RECORD
(
name VARCHAR2 (100)
, dob DATE
);
TYPE info_plus_rt IS RECORD
(
group_name VARCHAR2 (100)
, group_total NUMBER
, more_info info_rt
);
END;
/
哪些选项在执行后将会显示 "NOT NULL"?
(A)
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 IS NOT NULL
THEN
DBMS_OUTPUT.put_line ('NOT NULL');
ELSE
DBMS_OUTPUT.put_line ('NULL');
END IF;
END;
/
(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;
/
(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;
/
(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;
/
|
|