我是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')
这里我尝试了没有参数值,但仍然没有用。
答案 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