给记录变量赋值
对于任何记录变量,可以为每个域单独赋值;在有些情况下可以将一个记录变量的值赋给另一个记录变量;如果一个记录变量表示表或视图的整行或行的一部分,可以将被表示的行赋值给记录变量。
将一个记录变量赋值给另一个
只有下面的情况可以进行整体赋值:
n 2个变量具有相同的记录类型
n 目标变量是使用记录类型声明的,源变量是使用%ROWTYPE声明的(从光标来声明),它们的域在数量的顺序上相同,且对应域具有相同的数据类型。
--具有相同的记录类型 DECLARE TYPE name_rec IS RECORD ( first employees.first_name%TYPE DEFAULT 'John', last employees.last_name%TYPE DEFAULT 'Doe' );
name1 name_rec; name2 name_rec;
BEGIN name1.first := 'Jane'; name1.last := 'Smith'; DBMS_OUTPUT.PUT_LINE('name1: ' || name1.first || ' ' || name1.last); name2 := name1; DBMS_OUTPUT.PUT_LINE('name2: ' || name2.first || ' ' || name2.last); END;
|
--将使用%ROWTYPE声明的变量赋值给使用记录类型声明的变量 DECLARE TYPE name_rec IS RECORD ( first employees.first_name%TYPE DEFAULT 'John', last employees.last_name%TYPE DEFAULT 'Doe' );
CURSOR c IS SELECT first_name, last_name FROM employees;
target name_rec; source c%ROWTYPE;
BEGIN source.first_name := 'Jane'; source.last_name := 'Smith';
DBMS_OUTPUT.PUT_LINE ('source: ' || source.first_name || ' ' || source.last_name);
target := source; DBMS_OUTPUT.PUT_LINE ('target: ' || target.first || ' ' || target.last); END;
|
DECLARE TYPE name_rec IS RECORD ( first employees.first_name%TYPE, last employees.last_name%TYPE );
TYPE phone_rec IS RECORD ( name name_rec, -- 嵌套记录类型 phone employees.phone_number%TYPE );
TYPE email_rec IS RECORD ( name name_rec, -- 嵌套记录类型 email employees.email%TYPE );
phone_contact phone_rec; email_contact email_rec;
BEGIN phone_contact.name.first := 'John'; phone_contact.name.last := 'Smith'; phone_contact.phone := '1-650-555-1234';
--直接赋值 email_contact.name := phone_contact.name; email_contact.email := ( email_contact.name.first || '.' || email_contact.name.last || '@' || 'example.com' );
DBMS_OUTPUT.PUT_LINE (email_contact.email); END;
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/17013648/viewspace-1118607/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/17013648/viewspace-1118607/