2014-08-27 5 views
0

오라클에서 프로 시저를 호출하는 것에 대한 질문이 있습니다. 이것은 내가 가지고 있으며 이것은 SQLPlus에서 잘 작동합니다.1 라인의 호출 절차

VARIABLE resultSet REFCURSOR; 
BEGIN 
    CALL_TEST('10DD', :resultSet); 
END; 
/

그러나 "PL/SQL procedure completed successfully"대신 변수에 대한 설명이 나와 있기 때문에 아래 코드는 작동하지 않습니다.

VARIABLE resultSet REFCURSOR; BEGIN HUGHES_ARIAL.DUNNING_TEST('1D10', :resultSet); END;/

문제는 매번 Enter 키를 눌러야합니다. (세미콜론). 엔터를 누르지 않고도 단 한 줄로 작업 할 수있는 위의 문장을 만드는 방법이 있습니까?

전자 메일 캠페인 엔터프라이즈 소프트웨어를 사용하고 있지만 SQLPlus에서 수행 할 수있는 작업을 허용하지 않습니다.

+0

'/'는 새 줄에서 시작해야합니다. 나머지는 한 줄로 압축 될 수 있습니다. –

답변

1

모두 SQL*Plus 명령은 한 줄 이내 여야합니다. 서로 다른 명령을 사용할 때 여러 줄을 써야합니다.

예 : EXEC 당신의 절차는이 방법으로 호출 할 수 있습니다


SQL> variable test NUMBER;set linesize 0; 
Usage: VAR[IABLE] [ <variable> [ NUMBER | CHAR | CHAR (n [CHAR|BYTE]) | 
        VARCHAR2 (n [CHAR|BYTE]) | NCHAR | NCHAR (n) | 
        NVARCHAR2 (n) | CLOB | NCLOB | REFCURSOR | 
        BINARY_FLOAT | BINARY_DOUBLE ] ] 
사용.

VARIABLE resultSet REFCURSOR; 

EXEC CALL_TEST('10DD', :resultSet); 

또는

VARIABLE resultSet REFCURSOR; 

BEGIN CALL_TEST('10DD', :resultSet); END; 
/

귀하의 전체 PL/SQL 블록은 한 줄에있을 수 있습니다, 어디-으로 실행하려고 할 때, 당신은 명시 적으로 새로운 라인으로 '/'을 지정해야합니다!


여러 라인에서 실행에 관심이 있다면

,

는이 파일에 넣어 스크립트로 실행합니다.

SQL> !cat my_script.sql 
VARIABLE resultSet REFCURSOR; 
BEGIN 
    CALL_TEST('10DD', :resultSet); 
END; 
/

SQL> start my_script.sql 
+0

안녕하세요, Maheswaran, 답장을 보내 주셔서 감사합니다. 불행히도, 내가 사용하고있는 소프트웨어는 여러 줄을 지원하지 않으며 파일에 넣고 스크립트로 실행할 수 없습니다. – disix

+0

아,하지만 VARIABLE은 SQL * Plus 만 사용하는 명령입니다! 'PL/SQL' 안에'refcursor'를 정의하지 않으시겠습니까? –