바인딩 지원 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의 예제를 참고하라.