1

PL/SQL Records的主要用途和用途是什么,我们应该在哪里使用PL/SQL Records

    declare
  type locationRecordType is record (
   streetAddress       varchar2(40),
   postalCode          varchar2(12),
   city                 varchar2(30),
   stateProvince       varchar2(25),
   countryID           char(2) not null := 'US'
  );

 myLocation locationRecordType;
 begin
    myLocation.streetAddress := '4564 Culloden';
    myLocation.postalCode := '20190';
    myLocation.city := 'Regina';
    myLocation.stateProvince := 'SK';
    dbms_output.put_line( 'MY LOCATION IS:' );
    dbms_output.put_line( myLocation.streetAddress );
    dbms_output.put( myLocation.city||', '||myLocation.stateProvince )
    dbms_output.put_line( '  '||myLocation.postalCode );
    dbms_output.put_line( myLocation.countryID );
    end;
4

1 回答 1

2

PL/SQL 记录是复杂的可变数据类型。

如您所知,在 PL/SQL 中,我们的查询必须选择到变量中。如果查询是 SELECT * 我们可以使用%ROWTYPE语法定义变量,例如

emp_rec emp%rowtype;

如果我们选择单个列,我们只需使用适当的数据类型定义变量,例如对于 SELECT COUNT(*) 它将是

emp_cnt pls_integer;

但是假设我们的查询有一个更复杂的投影?假设是否只包含表中的几列?或者查询中加入的几个表中的某些列?在这种情况下,我们想要定义一个 PL/SQL 记录。

记录应始终填充 SELECT,而不是您显示的分配。另一个需要注意的是,我们不能在诸如 FORALL 之类的 DML 语句中使用记录。如果你需要做这些事情中的任何一个,你可能应该使用 SQL 类型来代替。

于 2013-07-05T08:47:44.023 回答