如何在pl sql developer中运行sql函数

时间:2016-03-08 09:15:55

标签: oracle plsql

我是oracle的新手。我使用pl sql developer在oracle数据库中创建了一个函数,并且我成功执行了。现在我想通过查询从同一个pl sql开发人员运行该函数。但它不能正常工作。 以下是我的功能。

create or replace function com.my_first_test_function(module_code out varchar2,                         
bpm_process_name out varchar2,module_name out varchar2,input in number)return number is
y_return number(1)
N_return varchar(200)
begin
if input='yes' then
Y_return :=select module_code ,bpm_process_name,module_name from com_tm_bpm_process_details;

if input='no' then nested_procedure_exception exception

但是当我尝试使用以下查询运行此函数时,它会抛出一些错误消息。任何人都可以告诉我如何从pl sql developer调用该函数。

select * from  com.my_first_test_function(java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,java.sql.Types.VARCHAR,'yes')

这里我尝试了没有参数值,但仍然没有用。

1 个答案:

答案 0 :(得分:6)

在SQL语句中调用函数是为了计算一些返回值,从参数中读取信息;因此,具有OUT参数的函数在SQL中没有意义。 如果需要能够处理OUT参数的东西,可以在PL / SQL块中使用过程,将变量作为OUT参数传递。

关于调用FUNCTION,您可以使用带有变量的PL / SQL块:

SQL> create or replace function f( n IN number) return number is
  2  begin
  3      return n * 2;
  4  end;
  5  /

Function created.

SQL> declare
  2      outNumber number;
  3  begin
  4      select f(10)
  5      into outNumber
  6      from dual;
  7      --
  8      dbms_output.put_line('outNumber: "' || outNumber || '"');
  9  end;
 10  /
outNumber: "20"

PL/SQL procedure successfully completed.

甚至直接在SQL查询中调用它:

SQL> select f(10) from dual;

     F(10)
----------
        20