-1
CONCAT 함수를 사용할 때 Oracle SQL과 PL/SQL에 대한 규칙이 다릅니 까? Oracle에서 CONCAT 기능을 위해 subselect를 함수와 함께 어떻게 사용할 수 있습니까? 나는 다음과 같은 간단한 쿼리가있는 경우Oralcle 함수에서 CONCAT 함수와 함께 subselect 사용
, 그것은 내가 PL/SQL 기능이 추가하면, 나는 오류가
입니다 오류FUNCTION TEST_SELECTION (BIT_PATTERN IN VARCHAR2,
SEL_PATTERN IN VARCHAR2)
RETURN VARCHAR2
IS
RESULT_PATTERN VARCHAR2 (250);
LOOP_BIT_PATTERN VARCHAR2 (10);
LOOP_SEL_PATERN VARCHAR2 (300);
TEMP_VAR VARCHAR2 (200);
BEGIN
IF (LENGTH (BIT_PATTERN) > 0 AND SUBSTR (BIT_PATTERN, 0, 1) = '1')
THEN
RESULT_PATTERN :=
CONCAT (RESULT_PATTERN,
(SELECT REGEXP_SUBSTR (SEL_PATTERN, **--This is line 35**
'[^,]+',
1,
1)
--TEMP_VAR
FROM DUAL)); **--This is line 40**
BIT_PATTERN := SUBSTR (BIT_PATTERN, 1);
SEL_PATTERN := '';
--TEST_SELECTION (BIT_PATTERN, SEL_PATTERN);
END IF;
END TEST_SELECTION;
을 얻을
SELECT CONCAT (' A, B.',
(SELECT REGEXP_SUBSTR ('CC, DDD, E, ',
'[^,]+',
1,
1)
--INTO RESULT_PATTERN
FROM DUAL))
FROM DUAL;
작동하지만,
[Error] PLS-00103 (35: 22): PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
(- + case mod new not null <an identifier>
<a double-quoted delimited-identifier> <a bind variable>
continue
[Error] PLS-00103 (40: 33): PLS-00103: Encountered the symbol ")" when expecting one of the following:
. , @ ; for <an identifier>
<a double-quoted delimited-identifier> group having intersect
minus order partition sta
'ORA-06503 : PL/SQL : 값없이 반환 된 함수'오류를 방지하려면'return'이'end if' 뒤를 따라야합니다. –
Upps, 당신 말이 맞아요 @William Robertson –
이것은 단지 예제 일뿐입니다. 나는 정말로 SQL 문에서 유효하더라도 CONCAT 함수가이 방법을 PL/SQL에서 유효하지 않은지 알아 내려고합니다. – adbdkb