콘텐츠로 이동

바인딩 지원 REMOTE 함수

바인딩 지원 REMOTE 함수#

이 절은 파라미터 바인딩을 지원하는 pass-through 방식의 REMOTE 함수를 기술한다.

REMOTE_ALLOC_STATEMENT#

원격 서버에서 수행할 SQL문을 준비(prepare)한다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

BIGINT REMOTE_ALLOC_STATEMENT (
    dblink_name     IN VARCHAR,
    statement_text  IN VARCHAR );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_text IN VARCHAR 원격 서버에서 수행할 SQL 구문

반환값#

함수 수행에 성공하면 statement ID가 반환되고, 그렇지 않으면 음의 정수가 반환된다.

예제#

<질의 1> link1이 가리키는 원격 서버의 t1 테이블에 c1 칼럼의 값이 20인 레코드의 c2 칼럼 값을 구하는 저장 프로시저를 생성하라. 단, c1 칼럼 값의 조건 검색에 파라미터 바인딩을 사용하라.

EXEC REMOTE_EXECUTE_IMMEDIATE('link1', 'CREATE TABLE t1(c1 INTEGER, c2 FLOAT(38))');

EXEC REMOTE_EXECUTE_IMMEDIATE('link1', 'INSERT INTO t1 VALUES(20, 30.001)');

CREATE OR REPLACE PROCEDURE proc1()
AS
    statement_id    BIGINT;
    row_cnt         INTEGER;
    result          INTEGER;
    col_value       FLOAT(38);

BEGIN
    statement_id  := REMOTE_ALLOC_STATEMENT('link1', 'SELECT * FROM t1 where c1 = ?');

    result := REMOTE_BIND_VARIABLE( 'link1', statement_id, 1, '20' );

    IF result >= 0 THEN
        result := REMOTE_EXECUTE_STATEMENT('link1', statement_id );

        LOOP
            result := REMOTE_NEXT_ROW( 'link1', statement_id );
            EXIT WHEN result < 0;

            col_value := REMOTE_GET_COLUMN_VALUE_FLOAT( 'link1', statement_id, 2, 38 );
            SYSTEM_.PRINTLN(col_value);
        END LOOP;

        result := REMOTE_FREE_STATEMENT('link1', statement_id);
        IF result < 0 THEN
            SYSTEM_.PRINTLN('Free failed');
        END IF;
    END IF;
END;
/

REMOTE_BIND_VARIABLE#

SQL 구문의 파라미터 마커에 값을 바인딩한다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

INTEGER REMOTE_BIND_VARIABLE (
    dblink_name        IN VARCHAR,
    statement_id       IN BIGINT,
    parameter_number   IN VARCHAR,
    value              IN VARCHAR );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT Statement ID
parameter_number IN INTEGER SQL 구문에서 값을 바인딩할 파라미터의 번호 순서. 1부터 시작
value IN VARCHAR 바인딩할 값

반환값#

음수가 반환되면 실패를 의미하고, 그렇지 않으면 성공을 의미한다.

예제#

REMOTE_ALLOC_STATEMENT의 예제를 참고하라.

REMOTE_EXECUTE_STATEMENT#

준비된 SQL 구문을 원격 서버에서 수행한다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

INTEGER REMOTE_EXECUTE_STATEMENT (
    dblink_name        IN VARCHAR,
    statement_id       IN BIGINT );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID

반환값#

음수가 반환되면 실패를 의미한다. 음수가 아닌 값이 반환되면 DML문을 수행한 경우에는 영향을 받은 행의 개수를, DDL문이나 SELECT문의 경우에는 성공을 의미한다.

예제#

REMOTE_ALLOC_STATEMENT의 예제를 참고하라.

REMOTE_FREE_STATEMENT#

수행이 완료된 구문을 해제한다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

INTEGER REMOTE_FREE_STATEMENT (
    dblink_name        IN VARCHAR,
    statement_id       IN BIGINT );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT Statement ID

반환값#

음수가 반환되면 실패를, 음수가 아닌 값이 반환되면 성공을 의미한다.

예제#

REMOTE_ALLOC_STATEMENT의 예제를 참고하라.

REMOTE_GET_COLUMN_VALUE_CHAR#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 CHAR 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

CHAR(char_size) REMOTE_GET_COLUMN_CHAR (
    dblink_name        IN VARCHAR,
    statement_id       IN BIGINT,
    column_number      IN INTEGER,
    char_size          IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.
char_size IN INTEGER 반환받을 CHAR 타입의 크기

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_GET_COLUMN_VALUE_VARCHAR#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 VARCHAR 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

VARCHAR(char_size) REMOTE_GET_COLUMN_VARCHAR (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER,
    varchar_size      IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.
varchar_size IN INTEGER 반환받을 VARCHAR 타입의 크기

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_GET_COLUMN_VALUE_FLOAT#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 FLOAT 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

FLOAT(precision) REMOTE_GET_COLUMN_FLOAT (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER,
    precision         IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.
precision IN INTEGER 반환받을 FLOAT 타입의 precision

반환값#

지정한 칼럼의 값이 반환된다.

예제#

REMOTE_ALLOC_STATEMENT의 예제를 참고하라.

REMOTE_GET_COLUMN_VALUE_SMALLINT#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 SMALLILNT 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

SMALLINT REMOTE_GET_COLUMN_SMALLINT (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_GET_COLUMN_VALUE_INTEGER#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 INTEGER 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

INTEGER REMOTE_GET_COLUMN_INTEGER (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_GET_COLUMN_VALUE_BIGINT#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 BIGINT 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

BIGINT REMOTE_GET_COLUMN_BIGINT (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_GET_COLUMN_VALUE_REAL#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 REAL 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

REAL REMOTE_GET_COLUMN_REAL (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_GET_COLUMN_VALUE_DOUBLE#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 DOUBLE 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

DOUBLE REMOTE_GET_COLUMN_DOUBLE (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_GET_COLUMN_VALUE_DATE#

REMOTE_NEXT_ROW 함수로 행의 위치를 정한 다음, 행을 구성하는 칼럼들 중 DATE 타입의 칼럼 값을 얻어 오기 위해 사용된다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

DATE REMOTE_GET_COLUMN_DATE (
    dblink_name       IN VARCHAR,
    statement_id      IN BIGINT,
    column_number     IN INTEGER );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID
column_number IN INTEGER 행 내에서 칼럼의 순서. 1부터 시작.

반환값#

지정한 칼럼의 값이 반환된다.

REMOTE_NEXT_ROW#

REMOTE_EXECUTE_STATEMENT 함수로 SELECT 문을 수행한 경우, 결과 집합에서 행의 위치를 다음으로 이동한다. 이 함수는 저장 프로시저 또는 저장 함수 내에서만 사용할 수 있다.

구문#

INTEGER REMOTE_NEXT_ROW (
    dblink_name        IN VARCHAR,
    statement_id       IN BIGINT );

파라미터#

이름 입출력 데이터 타입 설명
dblink_name IN VARCHAR 데이터베이스 링크 객체의 이름
statement_id IN BIGINT 수행할 Statement ID

반환값#

음수가 반환되면 실패를 의미하고, 그렇지 않으면 성공을 의미한다.

예제#

REMOTE_ALLOC_STATEMENT의 예제를 참고하라.