我是Oracle和SQL的新手,我正在尝试从SQL*Plus中执行一个简单的测试函数.我的函数叫做tf(用于测试函数),它在一个名为tf.sql的文件中定义如下;
create or replace
function
tf
(
arg1 in varchar2
)
return number
as
return_value number;
begin
return_value := 0;
dbms_output.put_line('Argument 1 = ' || arg1);
return return_value;
end;
/
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令成功将此函数加载到Oracle中;
SQL> start ./tf.sql
Run Code Online (Sandbox Code Playgroud)
执行此命令后,SQL*Plus只会说明;
Function created.
Run Code Online (Sandbox Code Playgroud)
然后我从SQL*Plus命令提示符执行以下命令(在我调用set serveroutput on之后);
SQL> exec dbms_output.put_line(SYSTEM.TF('Hello'));
Run Code Online (Sandbox Code Playgroud)
我得到以下输出;
Argument = Hello
0
PL/SQL procedure successfully completed.
Run Code Online (Sandbox Code Playgroud)
现在,如果我尝试直接从SQL*Plus命令提示符执行我的函数,请使用以下命令;
SQL> exec SYSTEM.TF('Hello');
Run Code Online (Sandbox Code Playgroud)
然后我收到来自SQL*Plus的以下错误消息;
BEGIN SYSTEM.TF('Hello'); END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00221: 'TF' is not a procedure or is undefined
ORA-06550: …Run Code Online (Sandbox Code Playgroud)