반환 된 열 중 하나에서 값을 임의로 자르는 oracle 저장 프로 시저에 커서가 있습니다.커서 열 값이 임의로 잘리지 않습니까?
나는이 패턴을 볼 수 없으며 때로는 값을 1 자 길이로 자릅니다. 테이블에서 scv_wn_roles swr.scv_code이다 절단되고
CURSOR cur_clients IS
SELECT DISTINCT p.PROPOSAL_ID, rop.client_id, c.FORENAME, c.INITIAL1, c.SURNAME, concat(c.FORENAME,c.SURNAME),
c.DATE_OF_BIRTH, c.SEX, a.ADDRESS_LINE1, a.ADDRESS_LINE2, a.ADDRESS_LINE3, a.ADDRESS_LINE4, '', a.POSTCODE, c.PPSN_NO, swr.scv_code
FROM proposal p, roleonproposal rop, client c, address a, scv_wn_roles swr
WHERE p.proposal_id = p_proposal_id
AND p.proposal_id = rop.proposal_id
AND rop.ROLE_ID <> v_Role
AND rop.CLIENT_ID = c.CLIENT_ID
AND c.CLIENT_ID = a.CLIENT_ID
AND p.PROPOSAL_ID = a.PROPOSAL_ID
AND rop.role_id = swr.id
AND p.company_id = swr.company_id;
칼럼 :
이 커서이다. 가능한 값은 ('WL1', 'WL2', 'WG', 'WB', 'WD', 'WP', 'WT', 'WE') 가능하지만 때때로 삽입되는 것은 W입니다.그때 커서를 통한 루프는 다음과 같이
FOR c_client IN cur_clients LOOP
그리고 역할 W로 삽입되는 테이블은 여기에서 다음과 같이
INSERT INTO scv_policy_client_lookup spc
(spc.policy_number, spc.system_client_id, spc.qsclient_id, spc.role_id)
VALUES
(c_client.proposal_id, c_client.client_id, v_QS_id, c_client.scv_code);
두 테이블의 구성은 :
create table SCV_WN_ROLES
(
ID NUMBER(10) not null,
REF_DESCRIPTION VARCHAR2(50),
COMPANY_ID NUMBER not null,
SCV_CODE CHAR(3)
);
그리고,
create table SCV_POLICY_CLIENT_LOOKUP
(
POLICY_NUMBER VARCHAR2(42) not null,
SYSTEM_CLIENT_ID VARCHAR2(51) not null,
QSCLIENT_ID NUMBER(38,10) not null,
ROLE_ID VARCHAR2(4) not null,
COUNTRY_IND VARCHAR2(1) default 'R'
)
열 swr.scv_code는 저장 프로 시저 내에서 다른 테이블에 삽입하며, 그들 만이 조회 테이블을 잘 작동합니다.
커서 값 c_client.scv_code를 VARCHAR2 (3)의 로컬 변수로 이동 한 다음 조회 테이블에 기록하려고 시도했지만 항상 작동하지는 않습니다.
중요한 점은 Oracle 11g입니다.
누구나 용의자가 있습니까? 도움을
감사합니다, 우리는 실행 야간 배치 작업을
mcquaim
테이블에 이러한 8 가지 역할 값만 있습니다. 지역 변수를 사용할 때 확인을 위해 표시 했습니까? 그렇게하면 'W'또는 더 긴 값이 표시됩니까? (왜 CHAR (3), VARCHAR (3)과 VARCHAR (4)를 같은 값으로 섞어 버리는가?) 데이터가 잘못되었거나 나중에 다른 것이 잘리는 지 궁금하다. 같은 proc의 테이블에서 값을 선택하면'W'가 표시됩니까? 아니면 proc이 끝난 후에 만 관찰 할 수 있습니까? –
안녕하세요, Alex 님, 답장을 보내 주셔서 감사합니다.표에는 16 개의 역할이 있지만 여러 회사 (1 & 4)는 있지만 내 테스트와 관련된 8 개의 역할 만 있습니다. 역할 테이블은 CHAR (3)로 정의 된 기존 테이블이므로 필요한 경우가 아니면 변경하지 않으려했습니다. 이게 내 문제 일 수 있다고 생각하니? 커서 쿼리를 수동으로 실행하면 절대로 절대로 절대로 올바른 역할 값을 항상 얻지 못합니다. 필자가 수동으로 Oracle SP를 실행하면 항상 1 회를 제외하고 계속 작동합니다. 나는 PLSQL에서 디버깅을 시도했는데 정의 된 로컬 변수로도 부정확 한 역할을하지는 못했다 .. – mcquaim
두 개의 문자 만있는 scv_code의 값에 대해서만 일어 났습니까 ??? – psaraj12