![](/img/trans.png)
[英]Oracle SQL Window Optimization / Possible Oracle PL/SQL Solution?
[英]Is it possible to do this in Oracle PL/SQL?
我有一個名為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:值不夠 ..
這是很令人沮喪......我只是想能夠返回一行數據到一個集合! 無論是記錄還是對象類型!!,我不在乎......我似乎無法做出這項工作...... !!!! 誰能幫忙?
您可以。 您只需要使用對象構造函數
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;
/
而不是這個:
v_obj T_MYTYPE;
嘗試這個:
v_obj table1%ROWTYPE;
聲明它與table1
的行具有完全相同的類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.