30 most important pl sql interview questions
다가오는 인터뷰를 준비하는 데 도움이되는 예제가 포함 된 PL / SQL 인터뷰 질문 :
PL / SQL이란 무엇입니까?
PL / SQL (Procedural Language / SQL)은 기본적으로 Oracle – SQL의 절차 적 확장입니다. PL / SQL은 사용자가 제어 구조, 절차, 함수, 모듈 등을 사용하여 복잡한 데이터베이스 애플리케이션을 개발할 수 있도록 도와줍니다.
이 기사에서는 최상위 PL / SQL 인터뷰 질문과 답변에 대해 설명합니다.
PL / SQL 인터뷰 질문 및 답변
시작하자!!
Q # 1) PL / SQL과 SQL을 차별화합니까?
대답: SQL과 PL / SQL의 차이점은 다음과 같이 분류 할 수 있습니다.
SQL | PL / SQL |
---|---|
SQL은 대화식 처리에 매우 유용한 자연어입니다. | PL / SQL은 Oracle-SQL의 절차 적 확장입니다. |
조건 테스트와 같은 절차 적 기능이 없으며 SQL은 루핑을 제공합니다. | PL / SQL은 절차 적 기능은 물론 조건문, 루핑 명령문 등과 같은 고급 언어 기능을 지원합니다. |
모든 SQL 문은 데이터베이스 서버에서 한 번에 하나씩 실행되므로 시간이 많이 걸리는 프로세스입니다. | PL / SQL 문은 전체 문 블록을 데이터베이스 서버로 동시에 전송하므로 네트워크 트래픽이 상당히 줄어 듭니다. |
SQL에는 오류 처리 절차가 없습니다. | PL / SQL은 사용자 정의 된 오류 처리를 지원합니다. |
Q # 2) PL / SQL의 특성을 입력 하시겠습니까?
대답:
PL / SQL의 특징은 다음과 같습니다.
- PL / SQL을 사용하면 여러 응용 프로그램에서 동일한 하위 프로그램에 액세스하고 공유 할 수 있습니다.
- Oracle이로드 된 경우 모든 운영 체제에서 코드를 실행할 수 있으므로 코드의 이식성으로 알려져 있습니다.
- PL / SQL을 사용하여 사용자는 자신 만의 맞춤형 오류 처리 루틴을 작성할 수 있습니다.
- Oracle 데이터 사전과의 통합으로 트랜잭션 성능이 향상되었습니다.
Q # 3) PL / SQL에서 사용할 수있는 데이터 유형은 무엇입니까?
대답: 데이터 유형은 데이터 유형 및 관련 작업을 식별하는 방법을 정의합니다.
다음과 같이 4 가지 유형의 사전 정의 된 데이터 유형이 설명됩니다.
- 스칼라 데이터 유형 : 스칼라 데이터 유형은 내부 구성 요소가없는 원자 데이터 유형입니다.
- 예를 들면
- CHAR (1-32,767 자 사이의 고정 길이 문자 값 범위)
- VARCHAR2 (1-32,767 자 사이의 가변 길이 문자 값 범위)
- NUMBER (고정 10 진수, 부동 10 진수 또는 정수 값)
- BOOLEAN (TRUE FALSE 또는 NULL 값에 대한 논리 데이터 유형)
- DATE (날짜 및 시간 정보 저장)
- LONG (가변 길이의 문자 데이터)
- 복합 데이터 유형 : 복합 데이터 유형은 쉽게 사용하고 조작 할 수있는 다른 데이터 유형과 내부 구성 요소로 구성됩니다. 예를 들면 RECORD, TABLE 및 VARRAY.
- 참조 데이터 유형 : 참조 데이터 유형은 다른 프로그램 항목 또는 데이터 항목을 지정하는 포인터라고하는 값을 보유합니다. 예를 들면 REF CURSOR.
- 대형 개체 데이터 유형 : Large Object 데이터 유형은 라인 외부에 저장된 대형 객체 (예 : 비디오 클립, 그래픽 이미지 등)의 위치를 정의하는 로케이터라고하는 값을 보유합니다.
- 예를 들면
- BFILE (바이너리 파일)
- BLOB (Binary Large Object)
- CLOB (문자 대형 오브젝트)
- NCLOB (NCHAR 유형 대형 오브젝트)
추천 자료 = >> PL SQL 데이터 유형
Q # 4) 예제를 통해 % TYPE 및 % ROWTYPE 데이터 유형의 목적을 설명 하시겠습니까?
대답: PL / SQL은 앵커링을 위해 % TYPE 선언 속성을 사용합니다. 이 속성은 변수, 상수 또는 열의 데이터 유형을 제공합니다. % TYPE 속성은 테이블 열과 동일한 데이터 유형을 가진 변수를 선언 할 때 유용합니다.
예를 들면 변수 m_empno는 컬럼과 동일한 데이터 유형 및 크기를 갖습니다. 엠프 노 테이블 emp.
m_empno emp.empno%TYPE;
% ROWTYPE 속성은 테이블의 행과 구조가 동일한 레코드가되도록 변수를 선언하는 데 사용됩니다. 행은 레코드로 정의되고 해당 필드는 테이블 또는보기의 열과 동일한 이름 및 데이터 유형을 갖습니다.
예를 들면 :
dept_rec dept%ROWTYPE;
이것은 DEPT 테이블의 전체 행을 저장할 수있는 레코드를 선언합니다.
Q # 5) PL / SQL 패키지로 무엇을 이해하고 있습니까?
대답: PL / SQL 패키지는 함수, 저장 프로 시저, 커서 및 변수를 한 곳에서 그룹화하는 스키마 객체입니다.
패키지에는 2 개의 필수 부분이 있습니다.
- 패키지 사양
- 패키지 본체
Q # 6) PL / SQL 커서로 무엇을 이해하고 있습니까?
대답: PL / SQL에는 두 개 이상의 행을 검색하고 처리하는 특수 기능이 필요하며 해당 리소스를 커서라고합니다. 커서는 SQL 문 및 명령문 처리를위한 정보를 포함하는 메모리 영역 인 컨텍스트 영역에 대한 포인터입니다.
PL / SQL Cursor는 기본적으로 데이터베이스에서 여러 데이터 행을 선택한 다음 각 행을 프로그램 내에서 개별적으로 처리하는 메커니즘입니다.
Q # 7) 커서 유형을 설명하십시오.
수동 테스트에서 테스트 케이스를 작성하는 방법
대답: 커서에는 두 가지 유형이 있습니다.
다음과 같이 설명됩니다.
a) 명시 적 커서 : 둘 이상의 행을 반환하는 쿼리의 경우 프로그래머가 명시 적 커서를 선언하고 이름을 지정합니다. PL / SQL에서 명시 적 커서를 사용하려면 4 단계를 따릅니다.
- 커서 선언
통사론: CURSOR는
SELECT 문;
여기서는 커서에 할당 된 이름이고 SELECT 문은 커서 활성 집합에 행을 반환하는 쿼리입니다.
- 커서 열기
통사론: 열다 ;
여기서는 이전에 정의 된 커서의 이름입니다.
- 커서에서 행 가져 오기
통사론: FETCH INTO;
여기서 행을 가져 오는 이전에 정의 된 커서의 이름을 나타냅니다.
가져 오는 데이터를받을 변수 목록을 나타냅니다.
- 커서 닫기
통사론: 닫기 ;
여기에 닫히는 커서의 이름이 있습니다.
b) 암시 적 커서 : SQL 문이 실행되면 PL / SQL은 이러한 커서를 정의하지 않고 자동으로 커서를 생성합니다.이를 암시 적 커서라고합니다.
다음 명령문의 경우 PL / SQL은 암시 적 커서를 사용합니다.
- 끼워 넣다
- 최신 정보
- 지우다
- SELECT (정확히 하나의 행을 반환하는 쿼리)
Q # 8) 언제 트리거를 사용합니까?
대답: '트리거'라는 단어는 활성화를 의미합니다. PL / SQL에서 트리거는 데이터베이스 관련 이벤트가 수행 될 때 데이터베이스가 수행하는 작업을 정의하는 저장 프로 시저입니다.
트리거는 주로 다음 목적에 필요합니다.
- 복잡한 무결성 제약을 유지하려면
- 변경 사항을 기록하여 테이블 정보 감사
- 테이블이 변경 될 때 다른 프로그램 동작 신호
- 복잡한 비즈니스 규칙 시행
- 유효하지 않은 거래 방지
Q # 9) 트리거 실행과 저장 프로 시저의 차이점을 설명해주세요.
대답: 저장 프로시 저는 인수가있는 프로 시저 호출을 통해 다른 블록에서 프로 시저 호출 문을 실행하여 명시 적으로 실행됩니다.
트리거는 DML 문 발생과 같은 트리거 이벤트가 발생할 때마다 암시 적으로 실행됩니다.
자바 배열 정렬 방법
Q # 10) 트리거와 제약의 차이점을 설명해주세요.
답변 : 트리거는 다음과 같은 점에서 제약 조건과 다릅니다.
트리거 | 제약 |
---|---|
트리거가 활성화 된 후에 추가 된 행에만 영향을 미칩니다. | 제한 조건이 사용 가능할 때 이미 존재하는 것을 포함하여 테이블의 모든 행에 영향을줍니다. |
트리거는 무결성 제약 조건을 사용하여 구현할 수없는 복잡한 비즈니스 규칙을 구현하는 데 사용됩니다. | 제약 조건은 데이터베이스의 무결성을 유지합니다. |
Q # 11) PL / SQL 블록이란 무엇입니까?
대답: PL / SQL에서 명령문은 블록이라는 단위로 그룹화됩니다. PL / SQL 블록에는 상수, 변수, SQL 문, 루프, 조건문, 예외 처리가 포함될 수 있습니다. 블록은 프로 시저, 함수 또는 패키지를 만들 수도 있습니다.
대체로, PL / SQL 블록은 두 가지 유형입니다.
(i) 익명 블록 : 헤더가없는 PL / SQL 블록을 익명 블록이라고합니다. 이러한 블록은 프로 시저, 함수 또는 트리거의 본문을 형성하지 않습니다.
예:
DECLARE num NUMBER(2); sq NUMBER(3); BEGIN num:= &Number1; sq := num*num; DBMS_OUTPUT.PUT_LINE(‘Square:’ ||sq); END;
(ii) 명명 된 블록 : 헤더 또는 레이블이있는 PL / SQL 블록을 명명 된 블록이라고합니다. 명명 된 블록은 서브 프로그램 (프로 시저, 함수, 패키지) 또는 트리거 일 수 있습니다.
추천 자료 = >> PL SQL 프로 시저 및 함수
예:
FUNCTION sqr (num IN NUMBER) RETURN NUMBER is sq NUMBER(2); BEGIN sq:= num*num; RETURN sq; END;
Q # 12) 구문 오류와 런타임 오류가 다른가요?
대답:
구문 오류 PL / SQL 컴파일러로 쉽게 식별 할 수있는 것입니다. 이러한 오류는 철자 오류 등이 될 수 있습니다.
런타임 오류 오류를 처리하기 위해 예외 처리 섹션이 포함되는 PL / SQL 블록의 오류입니다. 이러한 오류는 행을 반환하지 않는 SELECT INTO 문일 수 있습니다.
Q # 13) COMMIT, ROLLBACK, SAVEPOINT가 무엇인가요?
대답: COMMIT, SAVEPOINT 및 ROLLBACK은 PL / SQL에서 사용할 수있는 세 가지 트랜잭션 사양입니다.
COMMIT 문 : DML 작업이 수행되면 데이터베이스 버퍼의 데이터 만 조작하며 데이터베이스는 이러한 변경 사항의 영향을받지 않습니다. 이러한 트랜잭션 변경 사항을 데이터베이스에 저장 / 저장하려면 트랜잭션을 커밋해야합니다. COMMIT 트랜잭션은 마지막 COMMIT 이후의 모든 미해결 변경 사항을 저장하고 다음 프로세스가 발생합니다.
- 영향을받는 행 잠금이 해제 됨
- 완료된 것으로 표시된 거래
- 트랜잭션 세부 사항은 데이터 사전에 저장됩니다.
통사론: 범하다;
ROLLBACK 문 : 지금까지 현재 트랜잭션에서 발생한 모든 변경 사항을 실행 취소하거나 지우려면 트랜잭션을 롤백해야합니다. 즉, ROLLBACK은 마지막 COMMIT 또는 ROLLBACK 이후의 모든 미해결 변경 사항을 지 웁니다.
트랜잭션을 완전히 롤백하는 구문 :
롤백;
SAVEPOINT 문 : SAVEPOINT 문은 이름을 제공하고 현재 트랜잭션 처리의 지점을 표시합니다. 트랜잭션에서 SAVEPOINT 이전에 발생한 변경 및 잠금은 유지되고 SAVEPOINT 이후에 발생한 변경 및 잠금은 해제됩니다.
통사론:
SAVEPOINT;
Q # 14) 뮤 테이 팅 테이블과 제약 테이블은 무엇인가요?
대답: 테이블에서 트리거를 정의하는 것과 같이 DML 문에 의해 현재 수정되고있는 테이블을 돌연변이 테이블 .
참조 무결성 제약 조건을 위해 읽어야하는 테이블은 다음과 같습니다. 구속 테이블 .
Q # 15) 실제 매개 변수와 공식 매개 변수는 무엇입니까?
대답: 프로 시저 호출 문에 나타나는 매개 변수라고하는 변수 또는 식은 실제 매개 변수 .
예를 들면 : raise_sal (emp_num, merit + amount);
위의 예에서 emp_num과 amount는 두 개의 실제 매개 변수입니다.
프로 시저 헤더에서 선언되고 프로 시저 본문에서 참조되는 변수는 다음과 같이 호출됩니다. 공식 매개 변수 .
예를 들면 :
PROCEDURE raise_sal (emp_id INTEGER) IS
curr_sal REAL :
……… ..
시작
SELECT sal INTO cur_sal FROM emp WHERE empno = emp_id;
…….
END raise_sal;
위의 예에서 emp_id는 형식 매개 변수 역할을합니다.
Q # 16) ROLLBACK과 ROLLBACK TO 문의 차이점은 무엇입니까?
대답: 트랜잭션은 ROLLBACK 문 이후에 완전히 종료됩니다. 즉 ROLLBACK 명령은 트랜잭션을 완전히 실행 취소하고 모든 잠금을 해제합니다.
반면에 트랜잭션은 ROLLBACK TO 명령 이후에도 여전히 활성 상태이며 주어진 SAVEPOINT까지 트랜잭션의 일부만 실행 취소하므로 실행됩니다.
Q # 17) PL / SQL 스크립트를 작성하여 99,96,93 …… 9,6,3?
대답
SET SERVER OUTPUT ON DECLARE BEGIN FOR i IN REVERSE 1..99 LOOP IF Mod(i,3) = 0 THEN DBMS_OUTPUT.PUT_LINE(i); END IF; END LOOP; END; /
Q # 18) 매개 변수의 3 가지 모드는 무엇입니까?
대답: 파라미터의 3 가지 모드는 IN, OUT, IN OUT입니다.
다음과 같이 설명 할 수 있습니다.
- IN 매개 변수 : IN 매개 변수를 사용하면 호출되는 프로 시저에 값을 전달할 수 있으며 기본값으로 초기화 할 수 있습니다. IN 매개 변수는 상수처럼 작동하며 어떤 값도 할당 할 수 없습니다.
- OUT 매개 변수 : OUT 매개 변수는 호출자에게 값을 반환하며 지정해야합니다. OUT 매개 변수는 초기화되지 않은 변수처럼 작동하며 표현식에서 사용할 수 없습니다.
- IN OUT 매개 변수 : IN OUT 매개 변수는 초기 값을 프로 시저에 전달하고 업데이트 된 값을 호출자에게 반환합니다. IN OUT 매개 변수는 초기화 된 변수처럼 작동하며 값을 할당해야합니다.
Q # 19) 왜 암시 적 커서에 대해 % ISOPEN이 항상 거짓입니까?
대답: 암시 적 커서 SQL % ISOPEN 속성은 암시 적 커서가 DML 문에 대해 열리고 DML 문 실행 직후 닫히기 때문에 항상 false입니다.
Q # 20) DML 문을 실행하면 어떤 커서 속성에 문 결과가 저장 되나요?
대답: 명령문의 결과는 4 개의 커서 속성에 저장됩니다.
이것들은:
- SQL % FOUND
- SQL % NOTFOUND
- SQL % ROWCOUNT
- SQL % ISOPEN
Q # 21) PL / SQL 코드에서 주석을다는 방법은 무엇입니까?
대답: 주석은 가독성을 높이고 독자의 이해를 돕기 위해 코드에 포함 된 텍스트입니다. 이러한 코드는 실행되지 않습니다.
PL / SQL에서 주석을다는 방법에는 두 가지가 있습니다.
1) 한 줄 주석 : 이 주석은 double –로 시작합니다.
예:
알리다
num NUMBER (2); — 지역 변수입니다.
시작
안드로이드 용 최고의 모바일 스파이 앱
2) 여러 줄 주석 : 이 주석은 / *로 시작하고 * /로 끝납니다.
예:
시작
num : = & p_num; / * 이것은 프로그램 본문에서 사용되는 호스트 변수입니다 * /
……….
종료
Q # 22) PL / SQL에서 예외 처리를 통해 무엇을 이해하고 있습니까?
대답: PL / SQL에서 오류가 발생하면 예외가 발생합니다. 즉, PL / SQL 스크립트가 예기치 않게 종료되는 원치 않는 상황을 처리하기 위해 오류 처리 코드가 프로그램에 포함됩니다. PL / SQL에서 모든 예외 처리 코드는 EXCEPTION 섹션에 있습니다.
예외에는 3 가지 유형이 있습니다.
- 사전 정의 된 예외 : 미리 정의 된 이름이있는 일반적인 오류입니다.
- 정의되지 않은 예외 : 미리 정의 된 이름이없는 덜 일반적인 오류입니다.
- 사용자 정의 예외 : 런타임 오류를 일으키지 말고 비즈니스 규칙을 위반하십시오.
Q # 23) 미리 정의 된 예외를 등록 하시겠습니까?
대답:
사전 정의 된 예외 중 일부는 다음과 같습니다.
- 데이터가 없습니다: 데이터가 반환되지 않는 단일 행 SELECT 문입니다.
- TOO_MANY_ROWS : 둘 이상의 행이 반환되는 단일 행 SELECT 문입니다.
- INVALID_CURSOR : 잘못된 커서 작업이 발생했습니다.
- ZERO_DIVIDE : 0으로 나누려고했습니다.
Q # 24) PL / SQL 커서 예외 란 무엇입니까?
대답:
PL / SQL 커서와 관련된 예외는 다음과 같습니다.
- CURSOR_ALREADY_OPEN
- INVALID_CURSOR
Q # 25) 프로 시저에서 선언 된 커서와 패키지 사양에서 선언 된 커서의 차이점을 설명해주세요.
대답: 프로 시저에서 선언 된 커서는 로컬로 처리되므로 다른 프로 시저에서 액세스 할 수 없습니다.
패키지 사양에 선언 된 커서는 전역으로 처리되므로 다른 프로 시저에서 액세스 할 수 있습니다.
Q # 26) INSTEAD OF 트리거는 무엇입니까?
대답: INSTEAD OF 트리거는 특히 뷰 수정을 위해 작성된 트리거이며 SQL DML 문을 통해 직접 수정할 수 없습니다.
Q # 27) 표현이란 무엇입니까?
대답: 표현식은 연산자로 구분되는 일련의 리터럴 및 변수로 표현됩니다. PL / SQL에서 작업은 일부 데이터를 조작, 비교 및 계산하는 데 사용됩니다. 표현은 '연산자'와 '연산자'의 구성입니다.
- 피연산자 : 이들은 연산자에 대한 인수입니다. 피연산자는 변수, 함수 호출 또는 상수 일 수 있습니다.
- 연산자 : 운영자에 대해 수행 할 작업을 지정합니다. 예: '+', '*'등
Q # 28) 예제와 함께 다른 유형의 표현을 나열하십시오.
대답: 표현식은 아래에 언급 된 것과 같습니다.
- 숫자 또는 산술 표현식 : 예: 20 * 10 이상 15
- 부울 표현식 : 예: ‘sp % t’와 같은‘spot’
- 문자열 표현식 : 예: 길이 (‘NEW YORK’||‘NY’)
- 날짜 표현 : 예: SYSDATE> TO_DATE ('15 -NOV-16 ',“dd-mm-yy”)
Q # 29) WHILE 루프를 사용하여 사용자가 입력 한 숫자의 평균을 계산하는 프로그램을 작성하고 숫자 0을 입력하면 더 많은 숫자의 입력이 중지됩니까?
대답
DECLARE n NUMBER; avg NUMBER :=0 ; sum NUMBER :=0 ; count NUMBER :=0 ; BEGIN n := &enter_a_number; WHILE(n0) LOOP count := count+1; sum := sum+n; n := &enter_a_number; END LOOP; avg := sum/count; DBMS_OUTPUT.PUT_LINE(‘the average is’||avg); END;
Q # 30) PL / SQL 레코드는 무엇을 이해합니까?
대답: PL / SQL 레코드는 값 모음 또는 여러 정보의 그룹이라고 할 수 있습니다. 각 정보는 더 단순한 유형이며 필드로 서로 관련 될 수 있습니다.
PL / SQL에서 지원되는 세 가지 유형의 레코드가 있습니다.
- 테이블 기반 레코드
- 프로그래머 기반 레코드
- 커서 기반 레코드
결론
PL / SQL은 학습 및 응용 분야에서 매우 방대합니다. 이 인터뷰 질문과 답변이 도움이되기를 바랍니다.
PL SQL에 대해 자세히 알아 보려면 포괄적 인 PL / SQL 튜토리얼 시리즈 .
행복한 학습 !!