Oracle과 SQL을 처음 사용하고 SQL * Plus에서 간단한 테스트 기능을 실행하려고합니다. 내 함수는 tf (Test Function 용)라고 불리며 다음과 같이 tf.sql 파일에 정의됩니다.Oracle SQL * Plus에서 함수를 실행할 때 일관되지 않은 동작이 발생합니까?
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;
/
다음 명령을 사용하여이 함수를 성공적으로 Oracle에로드 할 수 있습니다.
SQL> start ./tf.sql
이 명령을 실행 한 결과로 SQL * Plus는 간단히 설명합니다.
(나는에 설정 SERVEROUTPUT을 호출 한 후) 나는 다음의 SQL * Plus를 명령 프롬프트에서 다음 명령을 실행하면Function created.
;
SQL> exec dbms_output.put_line(SYSTEM.TF('Hello'));
다음 출력이 표시됩니다.
Argument = Hello
0
PL/SQL procedure successfully completed.
이제 SQL * Plus 명령 프롬프트에서 직접 내 함수를 실행하려고하면 다음 명령을 사용하십시오.
SQL> exec SYSTEM.TF('Hello');
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: ;ine 1, column 7
PL/SQL: Statement ignored
아무에게도이 문제에 대해 알려 줄 수 있습니까? 내 함수가 첫 번째 경우에는 성공적으로 실행되는 것처럼 보이지만 두 번째 경우에는 성공적으로 실행되지 않는 이유는 해결할 수 없습니다.
SQL * Plus 명령 프롬프트에서 다음 명령을 실행하면;
SQL> select * from user_objects where object_name = 'TF';
다음과 같은 결과가 반환됩니다.
OBJECT_NAME
-----------
TF
SUBOBJECT_NAME
--------------
OBJECT_ID
---------
74475
DATA_OBJECT_ID
--------------
OBJECT_TYPE
-----------
FUNCTION
CREATED
-------
05-FEB-12
LAST_DDL_
---------
05-FEB-12
TIMESTAMP
---------
2012-02-05:02:11:15
STATUS
------
VALID
T
-
N
G
-
N
S
-
N
EDITION_NAME
------------
1
위의 사항에 대한 도움은 매우 감사하겠습니다.
미리 감사드립니다.
크레이그
True 또는 그는 annon PL/SQL 블록에서 호스트/바인드 또는 로컬 변수를 사용하여 반환 값 – MStp