utplsql高级数据比较中的点表示法

时间:2019-05-22 04:21:43

标签: oracle plsql utplsql

我在utPLSQL网站上遇到了以下代码段。

procedure test_cur_skip_columns_eq is
  l_expected sys_refcursor;
  l_actual   sys_refcursor;
begin
  open l_expected for select 'text' ignore_me, d.* from user_tables d;
  open l_actual   for select sysdate "ADate",  d.* from user_tables d;
  ut.expect( l_actual ).to_equal( l_expected ).exclude( 'IGNORE_ME,ADate' );
end;

procedure test_cur_skip_columns_cn is
  l_expected sys_refcursor;
  l_actual   sys_refcursor;
begin
  open l_expected for select 'text' ignore_me, d.* from user_tables d where rownum = 1;
  open l_actual   for select sysdate "ADate",  d.* from user_tables d;
  ut.expect( l_actual ).to_contain( l_expected ).exclude( 'IGNORE_ME,ADate' );
end;

它具有带点符号ut.expect( l_actual ).to_contain( l_expected ).exclude( 'IGNORE_ME,ADate' );的这一行代码。我阅读了一些Oracle文档,以了解点符号的用法,以及到处都显示package_name.object_name或schema_name.table_name的地方。但是上面提到的代码行看起来并不像其中任何一个。我有兴趣知道每个点之间的那些对象是什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

  

我很想知道每个点之间的那些物体是什么。

这些确实是oracle objects(又名用户定义类型,又名abstract data types)。

ut.expect( l_actual ).to_contain( l_expected ).exclude( 'IGNORE_ME,ADate' );

这里发生了什么

  • 软件包ut包含一个名为expect的函数,该函数返回类型为ut_expectation_compound的对象;
  • ut_expectation_compound是定义两个成员函数的类型:to_containexclude。他们两个都返回ut_expectation_compound,这使得方法调用可以像这样链接。

您可能想阅读Object-Relational Developer's Guide以获得对该主题的介绍。还要阅读PLSQL Language Reference-它应该为您有关PLSQL语法的大多数问题提供答案。