Oracle의 다른 항목 내에서 저장 프로시저 호출
Oracle에서는 하나의 저장 프로시저를 호출해야 하는 시나리오가 발생할 수 있습니다. 다른 것 안에. 이는 이 기사에서 살펴볼 다양한 방법을 사용하여 달성할 수 있습니다.
테스트 사례
다음 테스트 코드를 고려하세요.
SET SERVEROUTPUT ON; DROP PROCEDURE test_sp_1; DROP PROCEDURE test_sp; CREATE PROCEDURE test_sp AS BEGIN DBMS_OUTPUT.PUT_LINE('Test works'); END; / CREATE PROCEDURE test_sp_1 AS BEGIN DBMS_OUTPUT.PUT_LINE('Testing'); test_sp; END; / CALL test_sp_1;
문제 및 해결책
주어진 코드의 문제는 다음과 같습니다. 저장 프로시저를 직접 호출하려고 시도하는 마지막 줄입니다. 이 문제는 다음 세 가지 방법 중 하나를 사용하여 해결할 수 있습니다.
1. 호출 구문
Oracle의 SQL 참조에서는 저장 프로시저를 호출하는 구문을 다음과 같이 정의합니다.
CALL <procedure_name>(<argument_list>);
인수가 전달되지 않은 경우에도 프로시저 이름을 괄호로 묶습니다.
CALL test_sp_1();
2. 익명 PL/SQL 블록
익명 PL/SQL 블록에서는 명시적으로 이름을 지정하지 않고도 저장 프로시저를 호출할 수 있습니다.
BEGIN test_sp_1; END; /
3. Exec 명령(SQL*Plus)
SQL*Plus는 익명 블록에 대한 바로 가기로 exec 명령을 제공합니다. 이는 익명 블록의 일부인 것처럼 지정된 저장 프로시저를 실행합니다.
EXEC test_sp_1;
예
다음은 완전히 작동하는 예입니다.
SET SERVEROUTPUT ON; CREATE OR REPLACE PROCEDURE test_sp AS BEGIN DBMS_OUTPUT.PUT_LINE('Test works'); END; / CREATE OR REPLACE PROCEDURE test_sp_1 AS BEGIN DBMS_OUTPUT.PUT_LINE('Testing'); test_sp; END; / CALL test_sp_1(); -- Direct call exec test_sp_1; -- SQL*Plus shortcut BEGIN test_sp_1; END; -- Anonymous PL/SQL block
출력:
Testing Test works Testing Test works Testing Test works
위 내용은 다른 Oracle 저장 프로시저 내에서 하나의 Oracle 저장 프로시저를 어떻게 호출할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!