如何调用pl-sql函数,将数字表作为1号输入?

时间:2015-11-25 14:08:07

标签: sql oracle function plsql

我有一个以Numbers表作为输入的函数:

function foo(ids in custom_array)...

其中custom_array是数字表。

如果我只需要传递1个参数,如何从SQL查询中调用此函数?

我认为这应该是这样的

select * from table(foo(123))

但我猜错了。

修改 函数的声明如下:

create or replace function foo(id in custom_array) return
tableof2numbers AS
    mytable tableof2numbers;
    BEGIN
      SELECT cast(
          MULTISET (

/*there goes some super secret business logic*/
/*let's say that here we just do smth like this: */

select 123, 123 from dual

/*because this is not so important for this question*/
          )
          AS tableof2numbers)
      INTO
        mytable
      FROM dual;
      RETURN mytable;

其中tableof2numbers是另一种自定义类型,其声明与custom_array非常相似,但有2个数字。

提前致谢!!!

1 个答案:

答案 0 :(得分:0)

我的例子:

1)TYPE

create or replace TYPE "TABLE_OF_NUMBER"    
AS TABLE OF NUMBER

2)功能

CREATE OR REPLACE FUNCTION foo(
    par IN table_of_number)
  RETURN NUMBER
IS
BEGIN
  RETURN par(1);
END;

3)选择

SELECT foo(table_of_number(123)) FROM dual

如果你的函数返回表,它将类似于

SELECT * FROM TABLE (foo(custom_array(123)))

希望它会有所帮助。