프로시져로 전달한 데이타의 숫자,문자열구분

입력 데이터에 구분자 추가

입력 데이터를 C/C++에서 Oracle로 전달하기 전에, 숫자와 문자열을 구분하는 구분자를 추가합니다. 예를 들어:

  • 숫자는 "N:<value>" 형태
  • 문자열은 "S:<value>" 형태

프로시저 수정

CREATE OR REPLACE PROCEDURE bulk_insert_proc (
    p_data IN SYS.ODCIVARCHAR2LIST
)
IS
    v_prefix VARCHAR2(1);
    v_value  VARCHAR2(4000);
BEGIN
    FOR i IN 1..p_data.COUNT LOOP
        v_prefix := SUBSTR(p_data(i), 1, 2); -- 앞의 구분자 확인
        v_value := SUBSTR(p_data(i), 3);    -- 구분자 이후의 값

        IF v_prefix = 'N:' THEN
            INSERT INTO your_table (number_column, string_column)
            VALUES (TO_NUMBER(v_value), NULL);
        ELSIF v_prefix = 'S:' THEN
            INSERT INTO your_table (number_column, string_column)
            VALUES (NULL, v_value);
        END IF;
    END LOOP;

    COMMIT;
END;
/
 


C/C++ 코드에서 데이터 예시
:

char insertmsg[1000][1024] = {
    "N:12345", // 숫자
    "S:Hello World", // 문자열
    ...
};
 

+ Recent posts