这个问题是我的问题how to pass javascript array to oracle store procedure by ado parameter object
的一部分我认为将它分成3个小部分可以更快地得到答案。
对于这个问题。
我知道我们可以声明一个表类型并使用
select last_name
from employees in (select * from table(cast(my_table_type_var as my_table_type));
但是我总是从创建新包中得到错误,其中包括一个程序。我读了一些线程说我需要去掉一个sql(在模式中)类型,因为sql和pl / slq没有使用相同的引擎。我尝试通过spl * plus在模式中创建类型,但仍然会得到相同的错误 所以我首先需要一个工作包示例。
答案 0 :(得分:1)
您需要一个SQL对象来从TABLE
调用SELECT
运算符。这是一个小例子(9iR2):
SQL> CREATE TYPE table_number is TABLE OF NUMBER;
2 /
Type created.
SQL> SELECT * FROM TABLE(table_number(1,2,3));
COLUMN_VALUE
------------
1
2
3
你可以在这里使用一个函数(注意我的TYPE仍然在包外面定义):
SQL> CREATE OR REPLACE PACKAGE pkg AS
2 FUNCTION f RETURN table_number;
3 END;
4 /
Package created.
SQL> CREATE OR REPLACE PACKAGE BODY pkg AS
2 FUNCTION f RETURN table_number IS
3 BEGIN
4 RETURN table_number(4,5,6);
5 END;
6 END;
7 /
Package body created.
SQL> SELECT * FROM table(pkg.f);
COLUMN_VALUE
------------
4
5
6