데이터베이스 PL/SQL - 배열과 테이블

이미지
배열 pl / sql에서는 배열 자료형도 사용할 수 있다. 배열은 varray로 표현한다. 우리가 레코드 타입 변수를 선언했던 것처럼 배열 변수를 선언하기 위해서 먼저 type문으로 배열의 정보를 정의해주어야 한다. 일단 아래의 예시에서는 20개의 숫자 데이터를 받는 배열 타입을 정의하도록 하겠다. 그리고 이를 v_varray라는 변수로 선언하겠다. 그리고 v_varray에 (10, 20, 30, 40, 40)이라는 값을 집어넣겠다. 그리고 배열을 첫 번째 요소를 출력해보도록 하자. pl / sql에서는 배열의 요소가 1부터 시작하는 것을 명심하도록 하자. 그리고 배열의 저장된 값을 변경하는 것도 가능하다. 1번 인덱스에 있는 배열의 요소를 가져와서 100이라는 값으로 변경하고 출력해보자. 배열의 첫 번째 요소가 잘 출력되고 있으며, 변경 역시 제대로 이루어지고 있다. 배열과 반복문 앞에서 배웠던 반복문과 배열을 함께 사용해보도록 하겠다. 방금 만들 배열에 대해서 배열의 요소들을 반복문을 사용하여 출력해보겠다. for문을 사용하여 1부터 5까지 인덱스를 증가시키며 해당 인덱스의 배열 요소를 출력하는 것이다. 그런데 이 때 배열의 길이를 count함수 를 통해서 반환할 수 있다. 첫 번째 요소부터 차례대로 출력이 이루어지고 있다. 테이블 이번엔 테이블에 대해서 알아보자. 이 때 테이블은 데이터베이스에서의 테이블 객체를 의미하는 것이 아니라 일차원 배열과 유사하지만 크기 제한이 없다. 따라서 요소가 추가될 때마다 테이블의 크기가 알아서 증가한다. 한번 변수를 테이블 자료형으로 선언해보자. 이를 위해서 먼저 테이블의 형태를 정의하자. 우리가 만드는 테이블은 숫자 데이터로 이루어져 있으며, 인덱스를 정수형으로 받아오고 있다. 사실상 배열의 인덱스와 동일하게 사용하려 한다. 이제 테이블에 데이터를 넣어보겠다. 인덱스에 대해서 테이블 요소를 가져오면 알아서 테이블 크기가 증가하고 데이터가

데이터베이스 PL/SQL 제어문 - 반복문

이미지
반복문 반복문은 말그대로 동작을 반복시켜주는 명령문이다. pl/sql에서 반복문은 loop문을 사용한다. 이 때 역시 ()를 사용하지 않기 때문에 end loop를 꼭 끝나는 지점에 입력해야 하며, ‘ ; ’을 조심하도록 하자. 그리고 반복문에서 중요한 것은 탈출 조건이다. 탈출 조건을 명시하지 않으면 반복문이 무한하게 돌기 때문에 꼭 이를 기입해야 주어야 한다. 이 때 if를 사용하는 조건문을 작성하여도 되고, 아래 예문처럼 when을 사용하기도 한다. 그리고 탈출을 위해서 exit를 입력해준다. 문제 짝수의 합 구하기 10까지의 짝수 합 구하기 일단 pl / sql에는 %연산자가 없다는 사실을 기억하자. 그러면 짝수를 어떻게 구하면 좋을까? 정말 간단하게 구성하자면, 2부터 시작하여 2씩 증가하게 만들면 짝수만을 구하여 더할 수 있다. 이렇게 코드를 먼저 구성해보겠다. 그리고 12가 될 때 해당 루프문을 탈출하도록 하면 2부터 10까지 짝수항 덧셈을 수행할 수 있다. 100까지의 짝수 합 구하기 다음은 짝수를 100까지 더하려고 한다. 이 때는 위의 방법과 달리 mod라는 연산자를 사용하자. 이는 데이터베이스에서 사용하는 함수로서 나머지값을 계산하는 %와 같은 기능을 한다. 이를 사용하여 짝수인 경우에만 덧셈을 하도록 코드를 구성한다. 별찍기로 루프문을 연습해보자. for문 자바스크립트를 배울 때 반복문에는 여러 종류가 있었다. 이번엔 for문의 형태로 반복문을 보다 더 간단하게 정의해보자. 문법은 다음과 같다. for 변수 in 시작..끝 loop       실행문; end loop; 이제 이를 통해서 1부터 10까지 출력하는 반복문을 하나 작성해보겠다. 반복문을 돌 변수를 v_idx로 정하고 1부터 10까지 증가함에 따라 이를 출력해보겠다. 원하는대로 출력이 이루어지고 있다. reverse fo

데이터베이스 PL/SQL 제어문 - 조건문

이미지
제어문 pl / sql은 일종의 프로그래밍 언어와 마찬가지이기 때문에 제어문을 작성할 수 있다. 기본적으로 제어문에는 조건문과 반복문이 존재한다. 먼저 조건문에 대해서 알아보도록 하겠다.  여기서 조심할 점은 다른 프로그래밍 언어와 달리 pl/sql은 () 등을 잘 사용하지 않기 때문에 문법을 조심하도록 하자. 그리고 ‘=’연산자의 경우 대입 연산자가 아닌 비교 연산자라는 것을 명심하자. 대입 연산의 경우 ‘:=’를 사용하고 있다. 조건문 조건문은 pl / sql 역시 if문을 사용한다. 하지만 ()를 사용하지 않기 때문에 end if로 조건문의 종료를 정의하고, 조건부 입력 후 then을 통해 실행부임을 알려주도록 해야한다. 참고로 boolean 자료형은 사실 데이터베이스에서는 없는 자료형이다.하지만  pl/sql에서 제어문을 사용하기 위해 만들었다. 이제 두 값을 비교하는데 n1와 n2는 다른 값을 가지기 때문에 false가 될 것이고, 다르다가 출력된다. 조건문 중첩 선택적 if - elsif 제어문이 중첩된다는 것은 결국 다른 프로그래밍 언어처럼 선택적 if문을 구성할 수도 있다는 것을 나타낸다. 그리고 pl/sql에서는 이를 elsif라는 것을 사용한다. 다른 언어의 else if와 기능은 동일하다. 문제 점수를 입력받아서 학점을 출력하는 스크립트 작성하기 지금까지 배운 제어문을 활용하여 학점을 출력하는 스크립트문을 작성해보도록 하자. 먼저 입력을 받아야 하기 때문에 이에 대한 prompt 메시지를 설정하고, 대체 변수를 가져오자. 그리고 해당 변수를 v_score에 저장하여 이 값을 통해서 조건에 따른 학점을 가져오겠다. 스크립트문을 통한 데이터 삽입 스크립트문을 통해 데이터 삽입 역시 가능하다. 데이터를 삽입할 emp2라는 테이블을 하나 만들자. 그리고 방금 다뤘던 조건문을 함께 사용해보도록 하겠다. 그리고 시퀸스도 하나 만들어주도록

데이터베이스 PL/SQL 변수선언

이미지
변수선언 프로시저 내 declare에서 변수선언을 한다고 배웠다. 이제 변수를 선언해보도록 하자. 변수의 이름은 보통 두 가지 타입으로 선언된다. v_:  내부 변수로서 프로시저 내에서 사용할 변수에 대해 주로 v라는 표현을 붙여 사용한다. p_:  위에서 cmd 창에서 입력을 받던 대체 변수들에 대해  p라는 표현을 붙였던 것을 기억할 것이다. 이처럼 입력 변수 표현법으로 사용한다. 이제 예시를 통해서 변수 선언을 어떻게 진행하고, 초기화하는지 살펴보자. 아마 c언어를 다룬적이 있는 분들은 이해하기 쉬울 것이다. 변수를 선언하여 해당 변수를 위한 공간을 만들고, 해당 데이터 공간에 값을 집어 넣는다. 그리고 이 값을 출력하고 있는 형태이다. 출력창을 살펴보면, 우리가 설정해준 변수가 제대로 출력되고 있음을 확인할 수 있다. 아예 데이터를 넣고 출력하는 것도 물론 가능하다. 우리가 위의 예시에서 했던 과정을 하나로 합친다고 생각하면 된다. 게다가 이 과정에서 upper함수와 같은 sql함수를 적용할 수도 있고, constant를 이용하여 어떤 상수값으로 변수를 고정시킬 수 있다. 게다가 not null과 같은 제약 조건을 적용하는 것 또한 가능하다. 상수 / 변수 상수와 변수의 개념을 조금 짚고 넘어가겠다. 위의 예시에서 v_deptno는 변수로 설정되었다. 따라서 다음처럼 20이라는 값을 넣어 출력하면, 문제없이 10이라는 값이 20으로 변경되어 출력된다. 이번에는 상수로 선언된 v_com의 값을 변경시켜보겠다. 1400을 1600으로 변경시켜 출력해보자. 다음처럼 v_com은 피할당자로 사용될 수 없다는 오류 메시지를 출력하고 있다. 이번에는 변수에 데이터를 select를 통해서 넣도록 하겠다. 일단 declare에 변수를 선언한다. 그리고 select문을 작성하여 원하는 데이터에 대해서 가져와 해당 변수에 넣고, 이를 출력해보자. 다음처럼