0
我試圖從對象表中選擇一些東西到我自己的局部變量有問題。這是一些基本的代碼。選擇對象表到變量
create type my_obj as object
(
my_number number
)
/
create table my_table of my_obj;
/
insert into my_table values (my_obj(123))
/
declare
my_holder my_obj;
begin
select * into my_holder from my_table where rownum = 1;
dbms_output.put_line(my_holder.my_number);
end;
我得到了它的錯誤是
Error starting at line : 86 in command -
declare
my_holder my_obj;
begin
select * into my_holder from my_table where rownum = 1;
end;
Error report -
ORA-06550: line 4, column 10:
PL/SQL: ORA-00932: inconsistent datatypes: expected UDT got NUMBER
ORA-06550: line 4, column 3:
PL/SQL: SQL Statement ignored
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
爲什麼這可能會失敗的任何線索?
@Coat這個答案是正確的(它可以完成工作),但(IMO)次優。而不是使用構造函數use [value](https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions229.htm#SQLRF06158)函數將與對象錶行關聯的_correlation variable_變量轉換爲存儲在該行中的對象實例:'從my_table m中選擇值(m)到my_holder m,其中rownum = 1;'(注意語法需要使用表別名)。 – user272735
@ user272735謝謝你,這是一種我不知道的技術,我同意這是一個更好的解決方案。 –