단일 문자열 인 주소를 여러 문자열로 분할해야합니다. 다음은 주소를 해당 주소 행으로 분할하는 pl/sql 프로 시저에 대한 요구 사항입니다. 절차의 매개 변수 :PL/SQL 문자열 조작
가 인 (,,, VARCHAR2 을 AL4을 VARCHAR2를 AL3을 VARCHAR2를 AL2를 밖으로 나가 VARCHAR2에 주소 AL1 아웃 VARCHAR2) 생성하거나 절차 split_address 대체 .... 종료;
- 주소는 각각 varchar2 (100)의 4 개 라인 al1, al2, al3, al4로 분할되어야하는 varchar2 (250)입니다.
- 주소에 개행 문자 CHR (10)이 포함되어 있습니다. 그리고 이것들에 기초하여 분리가 이루어져야합니다.
- 주소 길이가 100보다 작거나 같으면 전체 주소를 세 번째 주소 줄 al3에 입력해야합니다.
- 주소 길이가 100보다 큰 경우에만 분할이 수행되어야합니다. 하나 개의 라인은 제 2 어드레스 라인에 첨가 중간에 또는 라인의 50 위치 및 나머지 근처, 행은 구분자에 의하여 둘로 분할되어야하는 100 개 이상의 문자 ','이다
- 경우
- 행 수가 4 개 이상인 경우 각 세그먼트를 하나의 주소 행으로 병합하여 최대 100자를 4 세그먼트까지
- 주소 행 3은 필수 출력입니다.
예를 들어 설명해 드리겠습니다. 주소가하자
이의 총 길이는 < (100)가 '문 YYYY
YYYYYYYYY
우편-NNNNNN
zzzzzzzzzzzzzzz
ZZZZZZZZZZZZZZZZZZZZ XXXXXXXXXX
XXXXXXXXXXX
#NN' 그 다음에 al3에 직접 들어가야합니다. 주소 길이가 100보다 길면 문제가 발생합니다. 이 주소는 8 개 라인을 가지고 있지만
- '문 #NN XXXXXXXXXX의 XXXXXXXXXX의 YYYY'-> 길이 100 최대
- 'YYYYYYYYYYY 우편-NNNNNNN, zzzzzzzzzzzz'-> 길이 100 최대
- 'zzzzzzzzzzz, ZZZZZZZZZZZZZZZZZZZZZ'-> 길이 100 최대
- 'zzzzzz입니다'-> 길이 100 최대
시스템은 오라클 10g이고, 나는 그것의 기능을 사용할 수 있습니다. 문제는 간단하지만 코드로 로직을 가져 오는 것은 약간 어렵습니다. 몇 가지 팁을 제공해주십시오. 미리 감사드립니다.
함수를 사용하면 1보다 큰 값을 반환하기가 약간 어렵습니다. 어떻게하고 싶니? – Rene
PL/SQL 함수는 프로 시저와 마찬가지로 인수를 가질 수 있습니다. –
허용되지만 일반적으로 함수가 OUT 매개 변수를 갖는 것은 바람직하지 않습니다. – APC