oracle数据库中,存储过程中 %rowtype 类型的用法有什么限制吗?

2025-05-24 00:12:32
推荐回答(1个)
回答(1):

请问from后面能接n个表查询, 然后通过%rowtype这种形式的变量插入到数据库的emp中吗?
答案: 不可以!
原因: 因为t_emp emp%rowtype ;这个语句的意思是 定义一个变量t_emp使其与EMP表具有一样的数据类型. 也就是说EMP表有哪里数据类型的字段,那么这个t_EMP变量也就能够存储什么类型的数据,而且大小范围也是一样的.(如VARCHAR2(20)).
形象点说,t_emp emp%rowtype 就像是一个勺子,装下了EMP表的一行记录.
比如说,你在过程里面定义t_emp emp%rowtype ;后
再加上 SELECT * INTO t_emp FROM EMP WHERE EMPNO=7639;
然后你测试一下,输出这个t_emp.可以这样做.
DBMS_OUTPUT.PUT_LINE(t_emp.EMPNO);
DBMS_OUTPUT.PUT_LINE(t_emp.SAL);
.....
等等,但是局限于EMP里面已有的字段.
如果要实现你的这个SQL :select t.id, t.name, d.deptno,d.city into t_emp from tab t,dept d
where t.deptno = d.deptno
则需要定义多个变量
如: t_name emp.name%type;
t_sa; emp.sal%type; 以此类推, DEPT表也一样.
明白了吧