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