gpt4 book ai didi

sql - 是否可以在 Oracle PL/SQL 中执行此操作?

转载 作者:行者123 更新时间:2023-12-02 06:21:07 24 4
gpt4 key购买 nike

我有一个名为 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;

但是PL/SQL: ORA-00947: 没有足够的值..

这真令人沮丧……我只想将 ONE 行数据返回到集合中!!无论是 RECORD 还是 OBJECT TYPE!!,我不在乎......我似乎无法完成这项工作......!!!!谁能帮忙??

最佳答案

可以。你只需要使用对象构造函数

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.

在你的情况下,它会是

SELECT t_mytype( column1, column2 )
INTO v_obj
FROM table1 t1
WHERE t1.num = 9;

但是,如果您想做的只是从表中选择整行到记录类型中,那么您会想按照 ruakh 的建议去做,只需声明一个 %ROWTYPE 记录

declare
l_emp_rec emp%rowtype;
begin
select *
into l_emp_rec
from emp
where ename = 'KING';
end;
/

关于sql - 是否可以在 Oracle PL/SQL 中执行此操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9438047/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com