안녕하세요.
쿼리문안에서 외부 실행 파일을 실행할 수 있나요?
주 목적은 트리거에서 특정 프로세스를 실행하는 것 입니다.
위 내용이 가능할까요?
어디선가 얼핏 듣기에 오라클에선 자바의 클래스를 호출할 수 있다고 들었습니다.
어떤 자료를 참조하면 되는지 조언을 부탁드립니다.
오늘도 좋은 하루되세요~~~
DB2 UDB에서 SQL문에서 외부 실행 화일을 수행하게 하는 Built in Function 이나 프로시저는 아직 제공하지 않습니다.
DB2명령어를 실행하는 프로시저는 제공합니다만 ^^
SQL에서 외부명령어나 실행화일을 수행하고 싶으시면 UDF(사용자 정의함수)나 프로시저를 C로 구현하여 외부 실행 화일을 실행하게 만들어 수행하셔야 합니다.
ㅜ.ㅜ
트리거로부터 SQL 프로시저 호출 이 예는 트리거 내에서 프로시저를 호출하기 위해 CALL문을 임베드하는 방법 및 GET DIAGNOSTICS문을 사용하여 프로시저 호출의 리턴 상태를 캡처하는 방법을 보여줍니다. 아래의 SQL은 필요한 테이블, SQL PL 언어 프로시저 및 사후 트리거를 작성합니다.
CREATE TABLE T1 (c1 INT, c2 CHAR(2))@ CREATE TABLE T2 (c1 INT, c2 CHAR(2))@ CREATE PROCEDURE proc(IN val INT, IN name CHAR(2)) LANGUAGE SQL DYNAMIC RESULTSETS 0 MODIFIES SQL DATA BEGIN DECLARE rc INT DEFAULT 0; INSERT INTO TABLE T2 VALUES (val, name); GET DIANOSTICS rc = ROW_COUNT; IF ( rc > 0 ) THEN RETURN 0; ELSE RETURN -200; END IF; END@ CREATE TRIGGER trig1 AFTER UPDATE ON t1 REFERENCING NEW AS n FOR EACH ROW MODE DB2SQL WHEN (n.c1 > 100); BEGIN ATOMIC DECLARE rs INTEGER DEFAULT 0; CALL proc(n.c1, n.c2); GET DIANOSTICS rs = RETURN_STATUS; VALUES(CASE WHEN rc < 0 THEN RAISE_ERROR('70001', 'PROC CALL failed')); END@ 다음 SQL문을 발행하면 트리거가 시작되고 프로시저가 호출됩니다.
UPDATE T1 SET c1 = c1+1 WHERE c2 = 'CA'@