2017-03-27 13 views
-1

어떤 이유로 든이 프로그램을 실행하려고 할 때마다 4 행 3 열 (SELECT)의 SQL 문이 무시되었다는 오류가 발생합니다. 또한 "YEAR": 잘못된 식별자. Year는 같은 양식에있는 또 다른 열입니다. 예를 들어 "17-"과 같이 하이픈을 사용하여 YEAR을 표시하는 열을 만들려고합니다.어떤 이유로 든 SELECT 명령이 인식되지 않습니다.

DECLARE 
    TERRA_NUMBER VARCHAR2(40); 
BEGIN 
SELECT CONCAT(YEAR , '-') 
INTO TERRA_NUMBER FROM DUAL; 
    RETURN TERRA_NUMBER; 
END; 
+0

당신은 당신이'당신이 (년 열이 있다는 의견에 따라) 절이 SELECT에 –

+0

를 해결하기 위해 수행하는 단계를 설명 할 수 이중 테이블. 거기에 1 년 열이 없습니다. 익명의 블록에서 돌아 오는 이유는 무엇입니까? – John

+1

에서 당신이에서 선택하는 잊은 것 같다 문제 – GurV

답변

0

설명이 너무 깁니다.

먼저 오라클에는 YEAR 변수가 없습니다. 아마도 당신은 TO_CHAR(sysdate, 'YYYY')을 원할 것입니다.

둘째, 익명 프로그래밍 블록은 값을 반환하지 않습니다. 따라서 RETURN은 부적절합니다.

함수 또는 저장 프로 시저의 일부인 경우 전체 정의를 표시해야합니다.

+0

나는 실제로 FROM DUAL이 작성되었음을 실감하지 못했습니다. 나는 실제로 내가 이미 APPLICATION이라고 불렀던 테이블에서 YEAR을 얻으려고합니다. – ruchithelamp

+0

감사합니다. 내 코드가 유효하다는 것을 알려 주셔서 감사합니다. 이제는 한 번에 하나의 행만 가져 오는 것에 대해 걱정해야합니다. – ruchithelamp

0

아마도 FindYear 함수를 만들 수 있습니다.

CREATE OR REPLACE FUNCTION FindYear RETURN VARCHAR2 
IS 
TERRA_NUMBER VARCHAR2(40); 
BEGIN 

SELECT CONCAT(TO_CHAR(sysdate, 'YYYY') , '-') 
INTO TERRA_NUMBER FROM DUAL; 
RETURN(TERRA_NUMBER); 
END; 
/

enter image description here