Database/mysql procedure, function: 7개의 글
그동안 단일 건이나 간단한 IF문만 사용하여 프로시저를 생성했는데 MySQL에서도 Oracle의 Cursor같이 여러개의 데이터를 뽑아와 데이터를 반복하여 작업을 진행해보려한다. 1. TEST 테이블 생성하기 CREATE TABLE `TEST_TB1` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `useYn` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', PRIMARY KEY (`id`) ) COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB AUTO_INCREMENT=..
테이블 백업을 수행하는 프로시저를 생성해보려고 한다. 기존 테이블(직원, 휴가, 휴가기록)에서 백업 테이블을 새로 생성하는 프로시저를 만든다. 프로시저를 생성하고 이벤트 스케쥴(event schedule)까지 걸어보겠다. 1. MySQL 프로시저 생성하기 DELIMITER $$ DROP PROCEDURE IF EXISTS backup_proc; CREATE PROCEDURE backup_proc() BEGIN DROP TABLE IF EXISTS BACKUP_EMP; CREATE TABLE BACKUP_EMP SELECT * FROM EMP_EMPLOYEE; DROP TABLE IF EXISTS BACKUP_VAC; CREATE TABLE BACKUP_VAC SELECT * FROM VAC_VACATIO..
MySQL function을 이용해 직원 출석등록 함수를 만들어보겠다. 1. 테이블 생성하기 CREATE TABLE `EMP_ATTEND` ( `ATTEND_YMD` VARCHAR(8) NOT NULL COLLATE 'utf8_bin', `EMP_NO` VARCHAR(9) NOT NULL COLLATE 'utf8_bin' ) COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB; 간단하게 직원출석 테이블을 생성한다. 2. 함수 생성하기 DELIMITER $$ DROP FUNCTION IF EXISTS FNC_ATTEND; CREATE FUNCTION FNC_ATTEND(attendType VARCHAR(10), empNo VARCHAR(10)) RETURNS BOOL BEGIN D..
커서를 테이블에 연 다음 모든 레코드를 반복하는 저장 프로 시저를 작성하고 있습니다. 반복 프로세스에서 첫 번째 커서의 결과를 기반으로 동적 쿼리를 만듭니다. 동적 SQL에서 커서를 열어야하는데 mysql의 공식 문서에 따르면 MySQL "커서는 핸들러를 선언하기 전에 선언해야합니다. 변수와 조건은 먼저 선언해야합니다. 커서 또는 핸들러 선언 " . 다음은 스크립트입니다. DELIMITER $$ DROP PROCEDURE IF EXISTS sp_test$$ CREATE PROCEDURE `sp_test`() BEGIN -- Declarations DECLARE prepared_sql VARCHAR(1000); DECLARE index_count INT; -- Cursors DECLARE cursor1 C..
[COMMENT] 아직 프로시저에서 커서의 사용이 어떤 작업때 사용해야하는지 실무적으로 감이 없다. 대략적으로 이해한 것을 적어보면 select into 를 이용할 경우는 하나의 데이터만 변수값으로 가질 수 있으므로 select 한 결과를 한 로우씩 받아서 처리해야할 때 커서를 이용한다. 프로시저 예제. 커서(CURSOR) 이용하기 1. 프로시저 생성 DELIMITER // DROP PROCEDURE IF EXISTS EVT_MONITORING; CREATE PROCEDURE EVT_MONITORING() BEGIN DECLARE v_finished INTEGER DEFAULT 0; DECLARE v_evtname varchar(20); # select 한 컬럼을 담을 변수 선언 DECLARE v_evt..
[프로시저 내용] A테이블에(departments_dev) 접근하여 조회된 값을 커서에 담아서 B테이블(departments_dev2)에 입력하는 프로시저 0. 테스트용 생성 DDL (테스트용이라 간단하게 생성함) -- departments_dev 생성 (데이터 조회용 테이블) CREATE TABLE `departments_dev` ( `dept_no` CHAR(4) NOT NULL, `dept_name` VARCHAR(40) NOT NULL ) COLLATE='utf8_general_ci' ENGINE=InnoDB; insert into departments_dev values('d009','Customer Service'); insert into departments_dev values('d007',..
그동안 단일 건이나 간단한 IF문만 사용하여 프로시저를 생성했는데 MySQL에서도 Oracle의 Cursor같이 여러개의 데이터를 뽑아와 데이터를 반복하여 작업을 진행해보려한다. 1. TEST 테이블 생성하기 CREATE TABLE `TEST_TB1` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `name` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', `useYn` VARCHAR(50) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci', PRIMARY KEY (`id`) ) COLLATE='utf8mb4_unicode_ci' ENGINE=InnoDB AUTO_INCREMENT=..