gpt4 book ai didi

oracle - 正确使用收集方法

转载 作者:行者123 更新时间:2023-12-01 09:25:34 25 4
gpt4 key购买 nike

CREATE  OR  REPLACE  TYPE  nvarchar2_list_type AS TABLE OF NVARCHAR2(100);


CREATE TABLE test_table(
id number primary key,
cars_list nvarchar2_list_type
)
NESTED TABLE cars_list STORE AS cars_list_storage_table;


insert into test_table(id, cars_list)
values(1, nvarchar2_list_type( 'AUDI', 'MERCEDES') );

以上操作全部成功,在表test_table中插入了1行,现在我写这个函数:

create or replace function get_cnt 
return number
as
ret_val number;
begin
SELECT cars_list.COUNT
INTO ret_val
from test_table where id = 1;

return ret_val;
end;

这会产生错误:ORA-00904: "CARS_LIST"."COUNT": invalid identifier

请告诉我这里有什么问题?

据我所知,必须使用 COUNT 方法 (from here)

最佳答案

不,您不能在这种情况下使用count 方法。您手头有 SQL 嵌套表,count 方法仅用于 PL/SQL 集合。

要计算嵌套表元素的数量,您可以取消嵌套该嵌套表或使用标量子查询:

取消嵌套:

SQL> select id
2 , count(*) as cnt
3 from test_table t
4 cross join table(t.cars_list)
5 group by id
6 ;

ID CNT
---------- ----------
1 2

标量子查询:

SQL> select id
2 , (select count(column_value)
3 from table(t.cars_list)) as cnt
4 from test_table t
5 ;
ID CNT
---------- ----------
1 2

关于oracle - 正确使用收集方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20934327/

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