plsql 프로시저에서 sql 스크립트를 실행하는 방법
다음과 같은 절차가 있습니다.
CREATE OR REPLACE PROCEDURE test is
BEGIN
DBMS_OUTPUT.PUT_LINE('This is a Test');
END;
현재 디렉토리에 저장된 sql 스크립트를 실행하고 싶습니다.sqlplus에서 '@scriptname'으로 실행할 수 있었습니다.sql' 하지만 절차 안에서 어떻게 할 수 있습니까?다음의 경우:
CREATE OR REPLACE PROCEDURE test is
BEGIN
DBMS_OUTPUT.PUT_LINE('This is a Test');
@scriptname.sql
END;
이것은 작동하지 않는 것 같습니다! pl/sql 프로시저에서 sql 스크립트를 실행할 수 있는 특정 사항이 있습니까?
일반적으로 pl/sql은 데이터베이스, 서버에서 실행되고 sqlplus는 클라이언트 프로세스이기 때문에 실행할 수 없습니다.서버는 클라이언트 및 파일과 동일한 시스템에 있어도 클라이언트가 참조하는 파일을 찾는 방법에 대해 아는 것은 말할 것도 없습니다.구문이 지원되고 지원되지 않더라도 sql 스크립트는 서버가 알고 액세스할 수 있는 위치에 있는 서버에 있어야 합니다.
실제로 SQL*Plus에서 이 작업을 수행할 수 있습니다. @가 행의 첫 번째 문자인지 확인하기만 하면 됩니다. 예:
CREATE OR REPLACE PROCEDURE test is
BEGIN
DBMS_OUTPUT.PUT_LINE('This is a Test');
@scriptname.sql
END;
SQL*Plus는 스크립트의 전체 내용을 읽고 프로시저의 해당 시점에 삽입한 다음 프로시저를 지정된 대로 작성합니다.즉, SQL*Plus 명령어를 사용할 수 없습니다.scriptname.sql
. 또한 @scriptname에 대한 언급도 없을 것입니다.데이터베이스에 작성된 실제 프로시저에서 sql.
OS 명령을 실행하여 SQLPlus를 시작하고 스크립트를 실행하도록 할 수 있습니다.시작할 때 파일 이름을 SQLplus에 전달하면 실행됩니다.
Google 외부 절차 및 extproc 또는 이 기사입니다.아니면 자바로 OS를 호출하는 명령 같은 것.
Java Stored Procedure를 작성하여 파일을 열고 해당 내용을 String으로 반환한 다음 해당 String에서 즉시 실행을 호출할 수 있습니다.
파일에 있는 악의적인 sql은 원하는 대로 할 수 있으므로 이 작업을 매우 주의해야 합니다.
해결책이 있다고 해도, 저는 이것을 추천하고 싶지 않습니다.PL/SQL 프로시저는 기본적으로 SQL 스크립트입니다.1. 셸 스크립트를 통해 데이터베이스 외부에서 SQL 스크립트를 실행하거나 2. 절차 내부에서 SQL 코드를 이동합니다.
언급URL : https://stackoverflow.com/questions/4772500/how-to-run-sql-scripts-from-a-pl-sql-procedure
'programing' 카테고리의 다른 글
mySQL - 하나의 필드에서 큰 키워드 목록의 컨텍스트 찾기 (0) | 2023.09.28 |
---|---|
MySQL 행을 읽기 전용으로 설정하는 방법은 무엇입니까? (0) | 2023.09.23 |
Galera 클러스터에서 테스트할 비주성분을 생성하는 방법 (0) | 2023.09.23 |
WP Rest API를 사용하여 WordPress를 백엔드로 React 배치 (0) | 2023.09.23 |
mysql-community-server를 설치하는 동안 GPG 키 문제가 발생 (0) | 2023.09.23 |