a%rowtype;
select col1 into a.col from table;编译通不过
pl/sql中如何为rowtype类型中的列赋值?
答案:2 悬赏:50 手机版
解决时间 2021-03-19 07:51
- 提问者网友:焚苦与心
- 2021-03-18 12:57
最佳答案
- 五星知识达人网友:十鸦
- 2021-03-18 13:36
%rowtype是行变量定义,定义时必须指定行的结构。
例如:declare
a table1%rowtype; ----- 根据表table1指定行的结构
或
declare
cursor c1 is select col from table1;
a c1%rowtype; ------ 根据游标c1的select 语句指定行的结构
例如:declare
a table1%rowtype; ----- 根据表table1指定行的结构
或
declare
cursor c1 is select col from table1;
a c1%rowtype; ------ 根据游标c1的select 语句指定行的结构
全部回答
- 1楼网友:掌灯师
- 2021-03-18 14:22
%type:
定义一个变量,其数据类型与已经定义的某个 数据变量的类型相同,或者与数据库表的某个列的数据类型
相同,这时可以使用%type。
使用%type 特性的优点在于:
1.所引用的数据库列的数据类型可以不必知道;
2. 所引用的数据库列的数据类型可以实时改变。
declare
--定义一个记录类型
type emp_record is record(
v_name employees.last_name%type,
v_email employees.email%type,
v_salary employees.salary%type,
v_job_id employees.job_id%type);
--声明自定义记录类型的变量
v_emp_record emp_record;
begin
--通过 select ... into ... 语句为变量赋值
select last_name, email, salary, job_id into v_emp_record
from employees
where employee_id = 101;
-- 打印变量的值
dbms_output.put_line(v_emp_record.v_name || ', ' || v_emp_record.v_email || ', ' ||
v_emp_record.v_salary || ', ' || v_emp_record.v_job_id);
end;
返回结果:
kochhar, nkochhar, 17000, ad_vp
pl/sql procedure successfully completed
%rowtype:
pl/sql 提供%rowtype 操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。
使用%rowtype 特性的优点在于:
1.所引用的数据库中列的个数和数据类型可以不必知道;
2.所引用的数据库中列的个数和数据类型可以实时改变。
declare
--声明一个记录类型的变量
v_emp_record employees%rowtype;
begin
--通过 select ... into ... 语句为变量赋值
select * into v_emp_record
from employees
where employee_id = 101;
-- 打印变量的值
dbms_output.put_line(v_emp_record.last_name || ', ' || v_emp_record.email || ', ' ||
v_emp_record.salary || ', ' || v_emp_record.job_id || ', ' ||
v_emp_record.hire_date);
end;
返回结果:
kochhar, nkochhar, 17000, ad_vp, 21-9月 -89
pl/sql procedure successfully completed
记录类型:
记录类型是把 逻辑相关 的数据作为一个单元存储起来 ,称作 pl/sql record 的域(field) ,其作用是存放互不相同但逻辑相关的信息。
定义记录类型语法如下:
type record_type is record
(
field1 type1 [not null] [:= exp1 ],
field2 type2 [not null] [:= exp2 ],
. . . . . .
fieldn typen [not null] [:= expn ]
) ;
提示 : 1) dbms_output.put_line 过程的功能类似于 java 中的 system.out.println() 直接将输出结果送到标准输出中 .
2) 在使用上述过程之前必须将 sql * plus 的环境参数 serveroutput 设置为 on, 否则将看不到输出结果 :
set serveroutput on
可以用 select 语句对记录变量进行赋值,, 只要保证记录字段与查询结果列表中的字段相配即可。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯