【发布时间】:2017-02-08 02:01:24
【问题描述】:
我有一个 plsql 函数,我在选择查询中调用它,如下所示:
select TEST_PKG.GET_VAL(db.id) as value from test_table db where (some condition lets say) db.id>11
plsql 函数返回一个 number 类型的嵌套表。
例如:type test_type is table of number
test_type 是我的函数的返回类型,它是一个数字数组。对于单个 id,它可以返回多个结果或数字
现在,当我执行查询时,我得到的列值输出为:
schema_name.functionname() i.e sa.GET_VAL() //if no record is found for an id
and sa.GET_VAL(21,33,11,33) //as output if function returns a value.
现在我怎样才能获得价值 21,33,11,33?如果我这样做了
select * from table (TEST_PKG.GET_VAL(12334))// I get numbers in each row. this is consumable.
我可以在我的初始选择查询中执行哪些操作以使值变为可使用的?如果我将选择查询返回的值写入某个数据类型为 int 的临时表并从那里使用,也可以。 我正在使用 oracle 11g。 非常感谢任何帮助。欢迎任何指导。 PS:我无法更改功能。
【问题讨论】:
-
声明'type test_type is table of number' - 不是关联数组,即嵌套表
-
是的,你是对的,我犯了一个错误
-
“消耗品”是什么意思?耗材怎么样?
SELECT TEST_PKG.GET_VAL(db_id)...是合法的语法,即使GET_VAL返回一个表类型。 -
也许您正在寻找这个:
SELECT CURSOR(SELECT * FROM TABLE(test_pkg.get_val(db.id))) FROM test_table db WHERE...?这将返回每个test_table记录的值列表作为游标而不是表类型。 -
@MatthewMcPeak 我的意思是很容易从 java 访问到消费。
标签: mysql oracle select stored-procedures plsql