1
13
您必须按照ammoQ的建议在“数据库级别”上声明类型:
而不是在PL/SQL中声明类型。如果仅在PL/SQL块中声明类型,则SQL“引擎”将无法使用该类型。 |
2
3
是关联数组,只能在PL/SQL范围中定义,因此不能在SQL语句中使用。 您需要使用以下命令在SQL作用域中定义集合(而不是关联数组):
(
注意:您不需要
然后你可以做:
或
|
3
2
这是一个很好的解决方案。 如果所转换的类型位于pl/sql块的DECLARE部分,则不能使用表(cast())。 您确实需要使用CREATE TYPE my_TYPE[…]。否则,它将抛出“无法获取行[…]”异常。 |
4
2
DECLARE TYPE number_table IS TABLE OF NUMBER; result_ids number_table := number_table(); BEGIN /* .. bunch of code that uses my type successfully */ OPEN ? AS SELECT * FROM TABLE(CAST(result_ids AS number_table)); /* BOOM! */ END; 当从java例程调用时,上述两种方法都会失败。我发现这是因为type number_表没有以可导出的方式定义,而不能从数据库中导出。这种类型在日常工作中非常有效。但只要您尝试执行以任何方式引用它的可返回记录集(包括在子句中?!?),您就会得到一个未定义的数据类型。
|
5
1
如果管道函数返回varchar2的rowtype,则定义一个类型(例如)
|
P Prad · 在表中找不到给定记录时,如何处理游标中的异常 6 年前 |
user8512043 · 日期差异和ORA-00937-非单个组功能 7 年前 |
Phillip · oracle:在合并列上分组 7 年前 |
Lizzie · 如何使用平均值进行分组? 7 年前 |
Andrea Zed · 提取过去30天的记录 7 年前 |