PLS-00103: 다음 중 하나를 예상할 때 "파일 끝" 기호가 발생했습니다.;
다음 스크립트를 실행 중입니다.
BEGIN
select department_name
from egpl_department
where department_id in (select department_id
from egpl_casemgmt_activity);
END ;
그리고 오류가 발생했습니다.
PLS-00103: Encountered the symbol "end-of-file" when
expecting one of the following:
;
PL에는 PL/SQL " "select " select "가 있어야 합니다.into
절:
DECLARE
v_department egpl_department.department_name%type;
BEGIN
select department_name
into v_department
from egpl_department
where department_id in (select department_id from egpl_casemgmt_activity);
-- Do something useful with v_department
END;
PLS-00103
항상 구문 오류가 발생했기 때문에 컴파일러가 헐거움을 의미합니다.메시지 텍스트에 다음과 같은 내용이 표시되면 매우 유용할 것입니다.You have made a syntax error, please check your code
하지만 그렇지 않습니다.
어쨌든 이 경우 오류는 PL/SQL에서 select 문이 변수를 채워야 한다는 것입니다.이는 T-SQL과는 다른 동작입니다.따라서 쿼리의 투영과 일치하는 변수를 정의하고 해당 변수를 선택해야 합니다.
Oracle 문서는 포괄적이고 온라인으로 제공됩니다.여기에서 SQL 쿼리를 PL/SQL로 통합하는 섹션을 찾을 수 있습니다.다음 질문을 미연에 방지하기 위해 이 책을 읽으시길 권합니다.왜냐하면 간단한 구문 boomer를 수정하면 TOO_MANY_ROWS를 누를 것이기 때문입니다(부서가 두 개 이상이라고 가정).
PL/SQL에서는 일부 데이터만 선택할 수 없습니다.결과는 어디로 가야 합니까?
옵션은 다음과 같습니다.
제다한을 합니다.
BEGIN
그리고.END
SQL*plus와 함께 SELECT를 실행하거나 SQL 문을 실행하고 결과를 표시할 수 있는 기타 도구를 실행합니다.사용하다
SELECT department_name INTO dep_name
PL행을 ) PL/SQL 파일(SELECT 파일)사용하다
SELECT department_name BULK COLLECT INTO dep_name_table
결과를 PL/SQL 표에 넣는 방법(여러 행에 대해 작동)
또는 어떤 환경에서 SQL 또는 PL/SQL 코드를 실행할 것인지 설명할 수 있습니다.
too_many_rows 문제를 피하기 위해 커서를 사용할 수 있습니다. (나는 이것을 테스트하지 않았지만, 이 줄을 따라)
DECLARE
v_department egpl_department.department_name%type;
cursor c_dept IS
select department_name
into v_department
from egpl_department
where department_id in (select department_id from egpl_casemgmt_activity)
order by department_name;
BEGIN
OPEN c_dept;
FETCH c_dept INTO v_department;
CLOSE c_dept;
-- do something with v_department
END;
이렇게 하면 테이블에서 찾은 첫 번째 값이 v_department에 저장됩니다.ORDER BY 절을 사용하여 반환된 행이 두 개의 다른 값일 가능성이 있다고 가정할 때 필요한 행인지 확인합니다.
대부분의 사람들은 그 전화가 문제라고 생각하지 않을 것입니다.
하지만 Oracle SQL Developer에는 이 문제를 에뮬레이트할 수 있는 재미있는 버그가 있습니다.
exec dbowner.sp1 ( p1, p2, p3); -- notes about the fields
오류 보고서 - ORA-06550: 줄 1, 열 362: PLS-00103: 다음 중 하나가 예상될 때 "파일 끝" 기호가 발생했습니다.
begin case 선언 종료 예외 종료 for goto if loop mod null pragma raise 반환 선택 업데이트를 선택하는 동안 << close current delete fetch lock insert open rollback savepoint set sql execute for all merge pipe 06550.00000 - "라인 %s, 열 %s:\n%s" *원인: 일반적으로 PL/SQL 컴파일 오류입니다.*조치:
exec dbowner.sp1 ( p1, p2, p3);
-- notes about the fields
PL/SQL 프로시저가 성공적으로 완료되었습니다.
DELPARE는 익명 PL/SQL 블록 및 중첩된 PL/SQL 블록에서만 사용됩니다.
프로시저가 중첩된 PL/SQL 블록인 경우를 제외하고 프로시저 블록에서 새 변수를 '도입'하기 전에 DELARE 키워드를 사용할 필요가 없습니다.
아래의 'DELCARE' 키워드 없이 변수를 선언하는 방법의 예입니다.
예;
CREATE OR REPLACE PROCEDURE EXAMPLE( A IN NUMBER, B OUT VARCHAR2 )
IS
num1 number;
BEGIN
num1:=1;
insert into a (year) values(7);
END;
이 질문/답변이 더 잘 설명됩니다.
언급URL : https://stackoverflow.com/questions/6967543/pls-00103-encountered-the-symbol-end-of-file-when-expecting-one-of-the-follow
'your programing' 카테고리의 다른 글
'XXX' 유형을 로드할 수 없습니다.전역' (0) | 2023.06.11 |
---|---|
NGINX를 Apache에 대한 역방향 프록시로 사용할 때 Wordpress Permalinks가 404를 반환합니다. (0) | 2023.06.11 |
여러 벡터에서 공통 요소를 찾는 방법은 무엇입니까? (0) | 2023.06.11 |
read.xlsx 열에 날짜가 아닌 경우 날짜 읽기 오류 (0) | 2023.06.11 |
리눅스 기반 서버에서 ASP.Net 실행 (0) | 2023.06.11 |