Fel*_*ida 2 sql oracle plsql oracle11g
我有一个TABLE1带有列NUMBER(8)和列的常规表varchar2(100).
现在我创建了一个OBJECT TYPE T_MYTYPE有两个属性:一个NUMBER和另一个varchar2.
简而言之,它们完全相同.
现在我想做以下事情.
v_obj T_MYTYPE;
begin
select * into v_obj from TABLE1 t1 where t1.num = 9;--guaranteed to return only ONE row!!
end;
Run Code Online (Sandbox Code Playgroud)
但是PL/SQL:ORA-00947:值不够 ..
这是很令人沮丧......我只是希望能够返回ONE一行数据到一个集合!无论是记录还是对象类型!!,我不在乎......我似乎无法做出这项工作...... !!!! 谁能帮忙?
您可以.您只需要使用对象构造函数
SQL> create type t_simple_emp
2 as object
3 (
4 empno number,
5 ename varchar2(100)
6 );
7 /
Type created.
SQL> declare
2 l_simple_emp t_simple_emp;
3 begin
4 select t_simple_emp( empno, ename )
5 into l_simple_emp
6 from emp
7 where ename = 'KING';
8 end;
9 /
PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)
在你的情况下,它会
SELECT t_mytype( column1, column2 )
INTO v_obj
FROM table1 t1
WHERE t1.num = 9;
Run Code Online (Sandbox Code Playgroud)
如果您要做的只是从表中选择整行到记录类型,那么,您想要像ruakh建议的那样做,只需声明一条%ROWTYPE记录
declare
l_emp_rec emp%rowtype;
begin
select *
into l_emp_rec
from emp
where ename = 'KING';
end;
/
Run Code Online (Sandbox Code Playgroud)