pl/sql编程中关于同类型的record变量赋值问题 本帖最后由 wodeguozili 于 2009-10-21 22:40:15 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 declaretype t_emp is record(v_empno emp.empno%type, --emp表是以scott用户登录时自带的表v_ename emp.ename%type,v_job emp.job%type);type t_emp1 is record(v_empno emp.empno%type,v_ename emp.ename%type,v_job emp.job%type);v_emp t_emp;v_emp1 t_emp1;beginselect empno,ename,jobinto v_empfrom empwhere empno = 7566;v_emp1.v_empno := v_emp.v_empno; v_emp1.v_ename := v_emp.v_ename; v_emp1.v_job := v_emp.v_job; dbms_output.put_line(v_emp1.v_job);end; v_emp t_emp;v_emp1 t_emp1; v_emp和v_emp1是不同类型的两个变量,虽然两个类型t_emp和t_emp1的定义是相同的。Oracle能对自带的变量类型进行隐式转换,比如integer和varchar2。但对用户自定义的复杂类型,隐式转换是不可能的。 自定义类型v_emp,无法直接进行赋值v_emp1 := v_emp; 看了下v_emp1没用上啊,要输出的话,直接以v_emp输出就可以了,为什么要再转到v_emp1 ??? t_emp和t_emp1是两个不同的类型,不能直接赋值。将v_emp1也定义为t_emp类型是可以的:declare type t_emp is record( v_empno emp.empno%type, --emp表是以scott用户登录时自带的表 v_ename emp.ename%type, v_job emp.job%type); type t_emp1 is record( v_empno emp.empno%type, v_ename emp.ename%type, v_job emp.job%type); v_emp t_emp; v_emp1 t_emp;begin select empno,ename,job into v_emp from emp where empno = 7566; v_emp1 := v_emp; --不知道为什么不可以 这里就是第20行 dbms_output.put_line(v_emp1.v_job); end; v_emp1 := v_emp改成下面这样试试v_emp1.v_empno:=v_emp.v_empnov_emp1.v_ename:=v_emp.v_enamev_emp1.v_job:=v_emp.v_empno 在dreamweaver中,浏览jsp网页 执行存储过程没有效果 在这个数据库里,你没有被允许使用PL/SQL Developer. 高手进来!在线等待阿===安装OAS出现的问题 oracle突然连不上 字符串相加问题, 请指点。。。谢谢!!!!!!! delete 中文问题? pl/sql 不能连接ORACLE9,弹出的提示窗口没有文字说明,只有一个“OK”按钮,请问是什么问题? oracle9i一套多少钱 数据建立出错的问题 exp命令疑问
type t_emp is record(
v_empno emp.empno%type, --emp表是以scott用户登录时自带的表
v_ename emp.ename%type,
v_job emp.job%type);type t_emp1 is record(
v_empno emp.empno%type,
v_ename emp.ename%type,
v_job emp.job%type);v_emp t_emp;
v_emp1 t_emp1;
begin
select empno,ename,job
into v_emp
from emp
where empno = 7566;
v_emp1.v_empno := v_emp.v_empno;
v_emp1.v_ename := v_emp.v_ename;
v_emp1.v_job := v_emp.v_job;
dbms_output.put_line(v_emp1.v_job);
end;
v_emp1 t_emp1; v_emp和v_emp1是不同类型的两个变量,虽然两个类型t_emp和t_emp1的定义是相同的。Oracle能对自带的变量类型进行隐式转换,比如integer和varchar2。但对用户自定义的复杂类型,隐式转换是不可能的。
v_emp1 := v_emp;
type t_emp is record(
v_empno emp.empno%type, --emp表是以scott用户登录时自带的表
v_ename emp.ename%type,
v_job emp.job%type); type t_emp1 is record(
v_empno emp.empno%type,
v_ename emp.ename%type,
v_job emp.job%type); v_emp t_emp;
v_emp1 t_emp;
begin
select empno,ename,job
into v_emp
from emp
where empno = 7566;
v_emp1 := v_emp; --不知道为什么不可以 这里就是第20行
dbms_output.put_line(v_emp1.v_job);
end;
v_emp1.v_empno:=v_emp.v_empno
v_emp1.v_ename:=v_emp.v_ename
v_emp1.v_job:=v_emp.v_empno