Tibero

Size: px
Start display at page:

Download "Tibero"

Transcription

1 Tibero tbesql/cobol 안내서 Tibero 5 Copyright 2013 TIBERO Co., Ltd. All Rights Reserved.

2 Copyright Notice Copyright 2013 TIBERO Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 우 ) Restricted Rights Legend All TIBERO Software (Tibero ) and documents are protected by copyright laws and the Protection Act of Computer Programs, and international convention. TIBERO software and documents are made available under the terms of the TIBERO License Agreement and may only be used or copied in accordance with the terms of this agreement. No part of this document may be transmitted, copied, deployed, or reproduced in any form or by any means, electronic, mechanical, or optical, without the prior written consent of TIBERO Co., Ltd. 이소프트웨어 (Tibero ) 사용서의내용과프로그램은저작권법, 컴퓨터프로그램보호법및국제조약에의해서보호받고있습니다. 사용서의내용과여기에된프로그램은 TIBERO Co., Ltd. 와의사용권계약하에서만사용이가능하며, 사용권계약을준수하는경우에만사용또는복제할수있습니다. 이사용서의전부또는일부분을 TIBERO의사전서면동의없이전자, 기계, 녹음등의수단을사용하여전송, 복제, 배포, 2차적저작물작성등의행위를하여서는안됩니다. Trademarks Tibero is a registered trademark of TIBERO Co., Ltd. Other products, titles or services may be registered trademarks of their respective companies. Tibero 는 TIBERO Co., Ltd. 의등록상표입니다. 기타모든제품들과회사이름은각각해당소유주의상표로서참조용으로만사용됩니다. Open Source Software Notice This product includes open source software developed and/or licensed by "OpenSSL," "RSA Data Security, Inc.," "Apache Foundation," "Jean-loup Gailly and Mark Adler," and "Paul Hsieh's hash". Information about the afore mentioned and the related open source software can be found in the "${INSTALL_PATH}/license/oss_licenses" directory. 본제품은 OpenSSL, RSA Data Security, Inc., Apache Foundation 및 Jean-loup Gailly와 Mark Adler 및 Paul Hsieh's hash 에의해개발또는라이선스된오픈소스소프트웨어를포함합니다. 관련상세정보는제품의디렉터리 ${INSTALL_PATH}/license/oss_licenses 에기재된사항을참고해주십시오. 안내서정보안내서제목 : Tibero tbesql/cobol 안내서발행일 : 소프트웨어버전 : Tibero 5 안내서버전 : 2.1.4

3 내용목차 안내서에대하여... xi 제1장 tbesql/cobol 소개 개요 구성요소 tbesql/cobol 문장 프로그램변수 구조체및배열변수 커서 프리컴파일러... 5 제2장 데이터타입 Tibero의데이터타입 tbesql/cobol의데이터타입 데이터타입의대응 데이터타입의변환 데이터변수의사용 ROWID VARCHAR 구조체 지시자 제3장 기본프로그래밍 개요 tbesql/cobol 프로그램의문법 프로그램의실행과정 런타임에러처리 프로그램의구조 변수선언 초기화 데이터베이스작업 종료화 에러처리 tbesql/cobol 문장의실행 SELECT INSERT UPDATE DELETE 커서 사용방법 CURRENT OF 절 사용예제 Tibero iii

4 3.5. 스크롤가능커서 사용방법 사용예제 제4장 배열변수 개요 배열변수의선언 입 / 출력배열변수 SELECT INSERT UPDATE DELETE FOR 절 구조체배열변수 구조체배열변수의선언 사용방법 제5장 tbesql/cobol 문장 개요 tbesql/cobol 문장의문법 tbesql/cobol 문장의공통문법 AT 절 FOR 절 DESCRIPTOR 이름 tbesql/cobol 문장의목록 ALLOCATE DESCRIPTOR CLOSE COMMIT CONNECT DEALLOCATE DESCRIPTOR DECLARE CURSOR DECLARE DATABASE DELETE DESCRIBE DESCRIBE DESCRIPTOR EXECUTE EXECUTE DESCRIPTOR EXECUTE IMMEDIATE FETCH FETCH DESCRIPTOR GET DESCRIPTOR INSERT OPEN PREPARE iv Tibero tbesql/cobol 안내서

5 ROLLBACK SAVEPOINT SELECT SET DESCRIPTOR UPDATE WHENEVER 제6장 tbesql/cobol 프리컴파일러옵션 개요 tbesql/cobol 프리컴파일러옵션의지정 환경설정파일 명령프롬프트 프로그램내부 tbesql/cobol 프리컴파일러옵션의목록 CLOSE_ON_COMMIT CONFIG DYNAMIC HOLD_CURSOR INAME INCLUDE MODE ONAME PREFETCH RELEASE_CURSOR SELECT_ERROR SQLCHECK TYPE_CODE UNSAFE_NULL USERID 색인 Tibero v

6

7 그림목차 [ 그림 1.1] tbesql/cobol 프로그램의컴파일과정... 6 [ 그림 2.1] ROWID의구성 [ 그림 3.1] tbesql/cobol 프로그램의실행과정 [ 그림 5.1] tbesql/cobol 문장의문법 Tibero vii

8

9 예목차 [ 예 1.1] tbesql/cobol에서의 UPDATE 문장... 2 [ 예 1.2] tbesql/cobol에서의프로그램변수의선언... 3 [ 예 1.3] 입 / 출력변수의사용... 4 [ 예 2.1] 데이터타입의변환 [ 예 2.2] TO_CHAR 함수를이용한데이터타입의변환 [ 예 2.3] ROWID 타입의사용 [ 예 2.4] VARCHAR 타입의변수선언 [ 예 2.5] VARCHAR 타입이변환된구조체 [ 예 2.6] VARCHAR 변수의일관성 [ 예 2.7] 출력변수와지시자변수 [ 예 2.8] 입력변수와지시자변수 [ 예 3.1] emp.tbco 프로그램의프리컴파일 [ 예 3.2] 프리컴파일러옵션을사용한 COPY 또는 SQLCA ESQL INCLUDE 파일의경로지정 [ 예 3.3] 커서의선언 [ 예 3.4] OPEN의실행 [ 예 3.5] FETCH의실행 [ 예 3.6] WHENEVER 문장의사용 [ 예 3.7] CLOSE의사용 [ 예 3.8] 커서의사용 [ 예 4.1] SELECT 문장에서의배열변수의사용 [ 예 4.2] SQLERRD(3) IN SQLCA를활용한루프의중단 [ 예 4.3] INSERT 문장의배열변수 [ 예 4.4] UPDATE 문장의배열변수 [ 예 4.5] DELETE 문장의배열변수 [ 예 6.1] tbesql/cobol 프리컴파일실행 [ 예 6.2] tbesql/cobol 프리컴파일러의옵션을사용한프리컴파일실행 Tibero ix

10

11 안내서에대하여 안내서의대상 본안내서는 Tibero ( 이하 Tibero) 에서제공하는 tbesql/cobol의기본개념과이를활용한프로그램의개발방법을알고자하는데이터베이스관리자 (Database Administrator, 이하 DBA) 및애플리케이션프로그램개발자를대상으로기술한다. 안내서의전제조건 본안내서를원활히이해하기위해서는다음과같은사항을미리알고있어야한다. 데이터베이스의이해 RDBMS 의이해 SQL 의이해 COBOL 프로그래밍의이해 안내서의제한조건 본안내서는 Tibero 를실무에적용하거나운용하는데필요한모든사항을포함하고있지않다. 따라서설 치와환경설정등운용및관리에관한내용은각제품안내서를참고하기바란다. 참고 Tibero 의설치및환경설정에관한내용은 "Tibero 설치안내서 " 를참고한다. 안내서에대하여 xi

12 안내서구성 TiberotbESQL/COBOL 안내서는총 6개의장으로이루어져있다. 각장의주요내용은다음과같다. 제1장 : tbesql/cobol 소개 tbesql/cobol의기본개념과구성요소를기술한다. 제 2 장 : 데이터타입 tbesql/cobol 프로그램에서사용되는데이터타입과데이터타입간의대응을기술한다. 제 3 장 : 기본프로그래밍 tbesql/cobol 프로그램의문법과실행과정, 런타임에러처리, 그리고 tbesql/cobol 문장의실행 과커서를기술한다. 제 4 장 : 배열변수 배열변수의기본개념과선언방법, tbesql/cobol 문장에서입 / 출력변수로배열변수를사용하는 방법을기술한다. 제 5 장 : tbesql/cobol 문장 tbesql/cobol 프로그램에서데이터베이스처리를위해사용하는 tbesql/cobol 문장을기술한다. 제 6 장 : tbesql/cobol 프리컴파일러옵션 tbesql/cobol 프리컴파일러를동작시킬때사용할수있는옵션을기술한다. xii Tibero tbesql/cobol 안내서

13 안내서규약 표기 <AaBbCc123> <Ctrl>+C [Button] 진하게 " "( 따옴표 ) ' 입력항목 ' 하이퍼링크 > 참고 의미프로그램소스코드의파일명, 디렉터리 Ctrl과 C를동시에누름 GUI의버튼또는메뉴이름강조다른관련안내서또는안내서내의다른장및절언급화면 UI에서입력항목에대한메일계정, 웹사이트메뉴의진행순서하위디렉터리또는파일있음하위디렉터리또는파일없음참고또는주의사항 [ 그림 1.1] [ 표 1.1] AaBbCc123 그림이름 표이름 명령어, 명령어수행후화면에출력된결과물, 예제코드 { } [ ] 필수인수값 옵션인수값 선택인수값 안내서에대하여 xiii

14 시스템사용환경 요구사항 Platform HP-UX 11i (PA-RISC, ia64) Solaris (SPARC 9/Solaris 9) AIX (PPC 5L/AIX 5.3) GNU (X86, 64, IA64) Linux kernel 2.6 이상 Windows(x86) 32bit/64bit Hardware 최소 1.5GB 하드디스크공간 512MB 이상메모리공간 Compiler PSM (C99 지원필요 ) tbesql/c (C99 지원필요 ) xiv Tibero tbesql/cobol 안내서

15 관련안내서 안내서 Tibero 설치안내서 Tibero tbcli 안내서 Tibero 애플리케이션개발자안내서 Tibero External Procedure 안내서 Tibero JDBC 개발자안내서 Tibero tbesql/c 안내서 Tibero tbpsm 안내서 Tibero tbpsm 참조안내서 Tibero 관리자안내서 Tibero tbadmin 안내서 Tibero 유틸리티안내서 Tibero 설치시필요한시스템요구사항과설치및제거방법을기술한안내서이다. Call Level Interface인 tbcli의개념과구성요소, 프로그램구조를소개하고 tbcli 프로그램을작성하는데필요한데이터타입, 함수, 에러메시지를기술한안내서이다. 각종애플리케이션라이브러리를이용하여애플리케이션프로그램을개발하는방법을기술한안내서이다. External Procedure를소개하고이를생성하고사용하는방법을기술한안내서이다. Tibero에서제공하는 JDBC 기능을이용하여애플리케이션프로그램을개발하는방법을기술한안내서이다. C 프로그래밍언어를사용해데이터베이스작업을수행하는각종애플리케이션프로그램을작성하는방법을기술한안내서이다. 저장프로시저모듈인 tbpsm의개념과문법, 구성요소를소개하고, tbpsm 프로그램을작성하는데필요한제어구조, 복합타입, 서브프로그램, 패키지와 SQL 문장을실행하고에러를처리하는방법을기술한안내서이다. 저장프로시저모듈인 tbpsm의패키지를소개하고, 이러한패키지에포함된각프로시저와함수의프로토타입, 파라미터, 예제등을기술한참조안내서이다. Tibero의동작과주요기능의원활한수행을보장하기위해 DBA가알아야할관리방법을논리적또는물리적측면에서하고, 관리를지원하는각종도구를기술한안내서이다. SQL/PSM 처리와 DBA를위한시스템관리기능을제공하는 GUI 기반의툴인 tbadmin을소개하고, 설치및사용방법을기술한안내서이다. 데이터베이스와관련된작업을수행하기위해필요한유틸리티의설치및환경설정, 사용방법을기술한안내서이다. Tibero를사용하는도중에발생할수있는각종에러의원인과해결방법을기술한안내서이다. 안내서에대하여 xv

16 안내서 에러참조안내서 Tibero 참조안내서 Tibero SQL 참조안내서 Tibero의동작과사용에필요한초기화파라미터와데이터사전, 정적뷰, 동적뷰를기술한참조안내서이다. 데이터베이스작업을수행하거나애플리케이션프로그램을작성할때필요한 SQL 문장을기술한참조안내서이다. xvi Tibero tbesql/cobol 안내서

17 연락처 Korea TIBERO Co., Ltd , Seohyeon-dong, Bundang-gu, Seongnam-si, Gyeonggi-do, South Korea Tel: Fax: Web (Korean): 기술지원 : USA TmaxSoft, Inc. 560 Sylvan Avenue Englewood Cliffs, NJ U.S.A Tel: Fax: info@tmaxsoft.com Web (English): Japan TmaxSoft Japan Co., Ltd. 5F Sanko Bldg, Mita, Minato-Ku, Tokyo, Japan Tel: Fax: info@tmaxsoft.co.jp Web (Japanese): 안내서에대하여 xvii

18 China TmaxSoft China Co., Ltd. Beijing Silver Tower, RM 1508, 2# North Rd Dong San Huan, Chaoyang District, Beijing, China, China Tel: ~8 Fax: Web (Chinese): xviii Tibero tbesql/cobol 안내서

19 제 1 장 tbesql/cobol 소개 본장에서는 tbesql/cobol 의기본개념과 tbesql/cobol 프로그래밍을시작하기전에알아야할구 성요소를한다 개요 tbesql은 ESQL(Embedded SQL: 내장 SQL) 의사용을위해 Tibero가제공하는인터페이스이다. 일반적으로, 프로그래밍언어는매우복잡하고세밀한작업을빠르게수행할수있으며, SQL 문장은간단한문법만으로데이터베이스에직접적인작업을수행할수있다. ESQL은이러한프로그래밍언어의연산능력과 SQL의데이터베이스 (Database) 를조작하는능력을결합하기위한방법이며, ANSI 및 ISO 표준으로정의되어있다. Tibero에서는애플리케이션개발에사용되는 COBOL과 C에대한 tbesql 인터페이스를제공한다. COBOL 프로그래밍언어를위한 ESQL 인터페이스를 tbesql/cobol이라고부르며, C 프로그래밍언어에대한인터페이스를 tbesql/c라고부른다. 참고 tbesql/c 에대한내용은 "Tibero tbesql/c 안내서 " 를참고한다 구성요소 tbesql/cobol 문장 tbesql/cobol 프로그램에는 COBOL 프로그래밍언어의소스코드와 tbesql/cobol 문장이혼합되어있다. tbesql/cobol 프로그램내에서 SQL 문장의질의 (Query) 등데이터베이스처리와관련된문장을 tbesql/cobol 문장 (tbesql/cobol Statement) 이라고한다. tbesql/cobol 문장은일반 SQL 문장과비슷하지만다음과같은점에서차이가난다. 항상 EXEC SQL로시작하고 END EXEC. 로종료한다. 필요한경우에입력변수와출력변수를포함한다. 일반 SQL 문장에는없는새로운절을포함할수있다. 예를들어, SELECT 문장은 INTO 절을포함할수있다. 제 1 장 tbesql/cobol 소개 1

20 다음은 tbesql/cobol 프로그램에서 UPDATE 문장을작성한예이다. [ 예 1.1] tbesql/cobol에서의 UPDATE 문장 EXEC SQL UPDATE EMP SET SALARY = SALARY * 1.05 WHERE EMPNO = 5 위의예에서는 tbesql/cobol 문장임을나타내는 EXEC SQL 로시작되고 로끝난다는점 에서일반 SQL 문장과차이가난다는것을알수있다. 참고 자세한내용은 제 5 장 tbesql/cobol 문장 을참고한다 프로그램변수 tbesql/cobol 프로그램에서가장중요한작업중에하나는프로그램과데이터베이스간에데이터를전달하는것이다. 이러한작업은주로프로그램변수를이용하여수행한다. 즉, 프로그램변수를이용하여질의를하거나변수의값을데이터베이스에저장할수있고, 데이터베이스의컬럼값을프로그램변수에저장할수도있다. 이러한작업을하기위해서는 Tibero의데이터타입과 tbesql/cobol 프로그램의데이터타입간의연관성이필요하다. 예를들어, 다음의 Tibero의데이터타입과 tbesql/cobol 프로그램의데이터타입은서로대응된다. Tibero 의데이터타입 NUMBER(p, s) tbesql/cobol 프로그램의데이터타입 PIC S9(n) NUMBER 타입에서 p 는정밀도 (Precision), s 는스케일 (Scale) 을의미한다. 참고 Tibero 의데이터타입과 tbesql/cobol 프로그램의데이터타입간의대응에대해서는 데 이터타입의대응 을참고한다. 프로그램변수의선언 tbesql/cobol 프로그램에서의변수는 COBOL 프로그램의변수와거의동일하게선언되고사용된다. 데이터베이스작업과관련되지않는변수는 COBOL 프로그램에서사용되는것과같이제약없이사용할수있다. 다음은 tbesql/cobol에서프로그램변수를선언한예이다. 2 Tibero tbesql/cobol 안내서

21 [ 예 1.2] tbesql/cobol에서의프로그램변수의선언 01 OPERATION PIC X(20) VARYING OCCURS 5 TIMES. 01 TELLER. 03 EMPNO PIC S9(7). 03 ENAME PIC X(10). 03 SALARY PIC S9(5). 01 CNT PIC S9(9). 위의예에서 VARYING 키워드로선언한 VARCHAR 타입은 tbesql/cobol 프로그램내에서만사용할 수있는타입이며, 프리컴파일과정을거쳐 COBOL 프로그래밍언어의데이터타입으로변환된다. 입 / 출력변수 데이터베이스작업과관련된변수는다음과같이두가지로구분된다. 입력변수 tbesql/cobol 문장을통해컬럼의값을삽입, 갱신, 삭제할때데이터의값을설정하기위한변수이다. 입력변수는다음과같은특징이있다. 입력변수를사용할때는반드시변수앞에콜론 (:) 을붙여야한다. 입력변수는 SELECT, INSERT, UPDATE, DELETE 문장과 WHERE 절과 SET 절등의컬럼값의위 치에사용될수있다. 입력변수는테이블이름이나컬럼이름의위치에는사용될수없다. 출력변수 tbesql/cobol 문장의질의수행결과로반환된값을저장하기위한변수이다. 출력변수는다음과같은특징이있다. 입력변수와마찬가지로변수앞에반드시콜론 (:) 을붙여야한다. 출력변수는 SELECT 문장의 INTO 절에사용될수있다. INTO 절에는출력변수와함께 INDICATOR 키워드와지시자변수가올수있다. 다음은 WHERE 절에사용된입력변수 EMPNO 와 INTO 절에사용된출력변수 ENAME, SALARY, ADDR 를사용한예이다. 제 1 장 tbesql/cobol 소개 3

22 [ 예 1.3] 입 / 출력변수의사용 EXEC SQL SELECT ENAME, SALARY, ADDR INTO :ENAME, : SALARY, :ADDR FROM EMP WHERE EMPNO = :EMPNO 위의문장을실행하기전에 EMPNO 값을설정하는코드가와야하며, 또한문장이실행된후에는반환된 ENAME, SALARY, ADDR 컬럼값에대한적절한작업이진행되어야한다 구조체및배열변수 구조체와배열변수는동시에여러개의입 / 출력변수를처리하는자료구조이다. 구조체 tbesql/cobol 프로그램에서는보통동시에여러개의입력변수나출력변수가사용된다. [ 예 1.3] 의경우에도 SELECT 문장의 INTO 절에서세개의출력변수 (ENAME, SALARY, ADDR) 가사용되었다. 또한 INSERT 문장을사용할경우에는여러개의입력변수가사용될수있다. 이렇게여러개의입력변수나출력변수가사용될경우, tbesql/cobol 프로그램에서도 COBOL 프로그래밍언어에서처럼여러개의변수를묶어하나의구조체로사용할수있다. 참고 입 / 출력구조체변수에대한자세한내용은 구조체 를참고한다. 배열변수 SELECT 문장을실행한결과의로우개수는대개의경우하나이상이며, INSERT 문장을실행할때에도보통하나이상의로우를삽입하게된다. 이때, 각각의로우에대해개별적으로 SQL 문장을여러번실행하지않고, 출력변수나입력변수를배열로선언하여 SQL 문장을한번만실행할수도있다. 출력변수나입력변수를배열로선언한경우각각을출력배열변수, 입력배열변수라고부른다. 또한이두가지변수를한꺼번에지칭할때는입 / 출력배열변수라고한다. 출력배열변수를이용하여 SELECT 문장을실행하는경우, 각결과로우는결과로우의개수와동일한크기를갖는출력배열변수에저장된다. tbesql/cobol 프로그램에서는하나이상의결과로우가반환되는 SELECT 문장에출력배열변수나커서를사용하지않으면에러를반환한다. 구조체도배열변수로선언하여사용할수있으며, 이를구조체배열변수라고부른다. 4 Tibero tbesql/cobol 안내서

23 참고 입 / 출력배열변수와구조체배열변수에대한자세한내용은 제 4 장배열변수 를참고한다 커서 커서는 SELECT 문장을실행한결과로반환된다수의로우각각에차례대로액세스하는데이터구조이다. SELECT 문장을실행한결과로반환되는로우의개수는기본키에대한질의가아니라면대부분하나이상이다. 또한, 반환되는로우의개수를미리알수없는경우가많기때문에, SELECT 문장의 INTO 절에변수를하나만명시해서는모든로우의데이터를저장할수없다. 이러한경우에프로그램을보다간편하고편리하게작성하기위해앞절에서한배열변수를사용할수도있지만커서를사용할수도있다. 커서를사용하는방법및순서는다음과같다. 1. DECLARE CURSOR 를이용하여커서를선언한다. 2. OPEN 을실행하여커서를연다. 커서를열면, 연관된 SQL 문장이실행되고질의의결과가반환된다. 3. FETCH 를실행한다. FETCH 를실행할때마다하나또는그이상의결과로우를얻을수있다. 커서는항상현재처리중인로우를가리킨다. 4. 모든결과로우에대한 FETCH 를실행한후에는 CLOSE 를실행하여커서를닫는다. 참고 자세한내용은 3.4. 커서 를참고한다 프리컴파일러 tbesql/cobol 프로그램내에는 COBOL 프로그래밍언어와 tbesql/cobol 문장이함께포함되어있다. tbesql/cobol 문장은 COBOL 프로그래밍언어의문법을따르지않기때문에, tbesql/cobol 프로그램을컴파일하기전에적절한처리를해주어야한다. 이러한컴파일이전의처리과정을프리컴파일 (Precompile) 이라고하며, 그때사용하는유틸리티를프리컴파일러 (Precompiler) 라고부른다. 프리컴파일러는 tbesql/cobol 프로그램에포함된 tbesql/cobol 문장을 tbesql/cobol 라이브러리함수로호출할수있는 COBOL 프로그래밍언어의소스코드로변환해준다. 제 1 장 tbesql/cobol 소개 5

24 이러한과정을위해서 tbesql/cobol 에서는다음과같은함수를정의하고있다. esql_do( ) 이함수의파라미터로는 SQL 문장과입 / 출력변수의정보가포함된다. 다음은 tbesql/cobol 프로그램의컴파일과정을나타내는그림이다. [ 그림 1.1] tbesql/cobol 프로그램의컴파일과정 tbesql/cobol 프로그램의컴파일과정은크게두가지과정으로나눌수있다. 프리컴파일 (Precompile) tbesql/cobol 프로그램을작성하여프리컴파일과정을거치고나면 COBOL 프로그래밍언어로만구성된소스코드가생성된다. 생성된소스코드는.cob 확장자를가진파일의형태로저장된다. 컴파일 (Compile) 프리컴파일과정을거친프로그램은다시컴파일과정을거치게되고최종적으로실행파일이생성된 다. 6 Tibero tbesql/cobol 안내서

25 제 2 장데이터타입 본장에서는 tbesql/cobol 프로그램에서사용하는데이터타입을알아보고데이터타입간의대응을한다. 데이터타입은 tbesql/cobol 문장에값을입력하고, 질의결과를얻기위해사용한다. tbesql/cobol은다음과같이두가지타입을지원한다. Tibero의데이터타입데이터베이스에저장된데이터에접근할때사용한다. tbesql/cobol 의데이터타입 애플리케이션프로그램에서데이터를조작할때사용한다 Tibero 의데이터타입 본절에서는 Tibero에서디폴트로제공하는데이터타입을간략히한다. 이러한데이터타입은데이터베이스의스키마객체를생성하는데사용하는것으로 tbesql/cobol 프로그램내에서도모든데이터타입에대응되는변수를사용할수있다. 다음은 Tibero 의데이터타입이다. 구분문자형숫자형날짜형대용량객체형내재형 데이터타입 CHAR, VARCHAR, RAW NUMBER, INTEGER, FLOAT DATE, TIME, TIMESTAMP BLOB, CLOB ROWID 문자열을표현하는데이터타입이다. 정수나실수의숫자를저장하는데이터타입이다. 시간이나날짜를저장하는데이터타입이다. LOB 타입을의미한다. 다른데이터타입이지원하는최대길이 (8KB 이하 ) 보다훨씬큰길이를가질수있는객체이다. 4GB까지가능하다. 사용자가명시적으로선언하지않아도 Tibero가자동으로삽입되는로우마다포함하는컬럼의타입이다. 참고 자세한내용은 "Tibero SQL 참조안내서 " 를참고한다. 제 2 장데이터타입 7

26 다음은각데이터타입에대한세부이다. 데이터타입 CHAR 일반문자열을저장하는데이터타입이다. ( 예 : CHAR(10)) VARCHAR 일반문자열을저장하는데이터타입이다. ( 예 : VARCHAR(10)) RAW 임의의바이너리데이터를저장하는데이터타입이다. ( 예 : RAW(10)) NUMBER 정수또는실수를저장하는타입이다. NUMBER 타입을선언할때정밀도와스케일을함께선언할수있다. - 정밀도 : 데이터값의전체자릿수 - 스케일 : 소수점이하자릿수 INTEGER FLOAT DATE TIME TIMESTAMP 기본적으로는 NUMBER 타입이다. 단, NUMBER 타입과는다르게정밀도와스케일을선언할때범위에한계를둔다. NUMBER 타입의값은 Tibero에서가변길이로저장되며, 실제값과정밀도, 스케일에따라그길이가달라진다. 특정날짜와시간을나타내는데이터타입이다. - DATE: 특정날짜 - TIME: 특정시간 - TIMESTAMP: 특정날짜와시간 BLOB 임의의바이너리데이터를데이터베이스에저장하는데이터타입이다. 한테이블의여러컬럼에선언할수있다. CLOB 읽을수있는문자열을데이터베이스에저장하는데이터타입이다. 한테이블의여러컬럼에선언할수있다. ROWID 데이터베이스내의각로우를식별하기위해, Tibero 시스템이각로우마다자동 으로부여하는데이터타입이다. 각로우가저장된물리적인위치를포함한다. 8 Tibero tbesql/cobol 안내서

27 2.2. tbesql/cobol 의데이터타입 본절에서는 tbesql/cobol 의데이터타입을한다 데이터타입의대응 Tibero에서제공하는데이터타입을 tbesql/cobol 프로그램에서그대로사용할수는없다. tbesql/cobol에는 Tibero의각데이터타입에대응되는 tbesql/cobol의데이터타입이정의되어있다. tbesql/cobol의데이터타입은대체로 COBOL 프로그래밍언어의데이터타입과동일하다. 또한각 Tibero의데이터타입에대응되는 tbesql/cobol의데이터타입은하나이상일수도있다. 다음은 Tibero의데이터타입에대응되는 tbesql/cobol의데이터타입이다. Tibero의데이터타입 CHAR, VARCHAR RAW NUMBER tbesql/cobol의데이터타입 PIC X(n), PIC X(n) VARYING PIC X(n) VARYING PIC S9(n) PIC S9(n)V9(n) 길이 n의문자열길이 n의바이너리데이터정수데이터실수데이터 ( 데이터가삽입될때이미정해진컬럼의정밀도및스케일을초과할수있다.) DATE, TIME, TIMESTAMP ROWID PIC X(n), PIC X(n) VARYING PIC X(n), PIC X(n) VARYING 길이 n 의문자열로변환 길이 n 의문자열로변환 tbesql/cobol의데이터타입중 VARYING 키워드를사용해서선언하는VARCHAR 타입은 Tibero의데이터타입중에 VARCHAR 타입을비롯한여러가지타입에대응하기위해새롭게정의된타입이다. tbesql/cobol 프로그램에서는각데이터타입간의변환을지원한다. 예를들어, VARCHAR 타입의문자열이정수를표현하고있는내용이라면, 그값을 PIC S9(n) 타입의변수에저장할수있다. 또한실제로 DATE, TIME, TIMESTAMP 타입과 ROWID 타입에바로대응되는타입은없으며, 항상변환과정을거쳐서저장해야한다. 참고 VARCHAR 타입의자세한내용은 VARCHAR 을참고한다. 제 2 장데이터타입 9

28 데이터타입의변환 tbesql/cobol 프로그램에서는 Tibero 데이터타입각각에대응되는타입이외에다른데이터타입을사용할수있다. 예를들면데이터베이스의 NUMBER 타입의컬럼값을저장하기위해 tbesql/cobol 프로그램에서는출력변수로 VARCHAR 타입을사용할수있다. 이와반대로, NUMBER 타입프로그램변수의값을 VAR CHAR 타입의컬럼에저장할수도있다. tbesql/cobol 프로그램을프리컴파일하면입 / 출력변수의데이터타입이프로그램내에함께포함된다. 이렇게포함된데이터타입을기준으로데이터의값이입 / 출력될때, 컬럼타입과비교하여필요한경우에는데이터타입의변환을수행한다. 만약데이터타입의변환이불가능한경우에는에러를반환한다. 변환가능한데이터타입 다음은 Tibero 데이터타입으로부터변환가능한 tbesql/cobol 데이터타입이다 데이터타입의 대응 의일부내용이포함되어있다. Tibero의데이터타입 NUMBER CHAR, VARCHAR DATE, TIME, TIMESTAMP ROWID tbesql/cobol의데이터타입 PIC S9(n) PIC S9(n)V9(n) PIC X(n), PIC X(n) VARYING PIC X(n), PIC X(n) VARYING PIC X(n), PIC X(n) VARYING 정수데이터실수데이터문자열데이터 ( 실수를포함한다.) 날짜형데이터 ROWID 데이터 tbesql/cobol 데이터타입으로부터 Tibero 데이터타입으로변환할때에도위의변환관계가적용된다. 예를들어, tbesql/cobol 프로그램의 PIC S9(n) 타입의변수값을 VARCHAR 타입컬럼에저장할수있으며, VARYING 키워드를통해선언하는VARCHAR 타입값을이용하여 ROWID에대한질의를수행할수있다. 다음은데이터타입의변환을수행하는예이다. [ 예 2.1] 데이터타입의변환 01 SAL-STR PIC X(8) VARYING. 01 EMP-DATE PIC X(20) VARYING.... EXEC SQL SELECT SALARY, EMP_DATE INTO :SAL-STR, :EMP-DATE FROM EMP WHERE EMPNO = Tibero tbesql/cobol 안내서

29 DISPLAY 'SALARY = ' SAL-STR-ARR IN SAL-STR. DISPLAY 'EMP-DATE = ' EMP-DATE-ARR IN EMP-DATE. 위의 [ 예 2.1] 을실행하면다음과같은내용이출력된다. SALARY = EMP-DATE = 데이터타입을변환할때에는데이터값의범위와내용에유의해야한다. 데이터값의범위는그값을저장할장소가충분히포함할수있는한도내이어야한다. 예를들면데이터값의범위는 tbesql/cobol 프로그램의 PIC S9(3) 타입의변수에그범위를넘어서는값인문자열 "327680" 을변환하거나, 마찬가지로 VARCHAR(3) 의타입을갖는컬럼에그범위를넘어서는값인 65535를변환할수없다. 데이터의내용은데이터베이스컬럼에저장된 "ABCDE" 문자열을프로그램 PIC S9(3) 타입의변수에변환할수없으며, 프로그램변수에저장된 " 가나다 " 문자열을 DATE 타입의컬럼에변환할수없다. 내장함수를이용한데이터타입의변환 Tibero 내장함수를이용하여데이터타입의변환을실행할수도있다. 그러한함수로는 TO_CHAR,TO_DATE,TO_NUMBER 등이있다. 다음은 TO_CHAR 함수를이용하여실수데이터를문자데이터로변환하여출력하는예이다. [ 예 2.2] TO_CHAR 함수를이용한데이터타입의변환 01 SAL-STR PIC X(8) VARYING.... EXEC SQL SELECT TO_CHAR(SALARY, '$99,999.99') INTO :SAL-STR FROM EMP WHERE EMPNO = 20 DISPLAY 'SALARY = ' SAL-STR-ARR IN SAL-STR 실수데이터를담고있는변수 SALARY를 TO_CHAR 함수를통해형식문자열 ('$99,999.99') 을지정하여문자데이터로변환한다. 2 VARCHAR 타입의변수 SAL-STR에저장한다. 3 DISPLAY 문을통해 SAL-STR 변수를출력한다. 위의 [ 예 2.2] 을실행하면다음과같은내용이출력된다. SALARY = $35,000 제 2 장데이터타입 11

30 참고 데이터타입을변환하는내장함수에대한자세한내용은 "Tibero SQL 참조안내서 " 를참고한다 데이터변수의사용 COBOL 프로그래밍언어의변수와는달리 tbesql/cobol 프로그램에서데이터베이스작업과관련된변수는모두 DECLARE 영역내에선언되어야한다. 다음은 DECLARE 영역내에선언된변수의예이다. EXEC SQL BEGIN DECLARE SECTION 01 OPERATION PIC X(20) VARYING OCCURS 5 TIMES. 01 TELLER. 03 EMPNO PIC S9(7). 03 ENAME PIC X(10). 03 SALARY PIC S9(5). 01 CNT PIC S9(9). EXEC SQL END DECLARE SECTION 위의예에서알수있듯이 DECLARE 영역은 EXEC SQL BEGIN DECLARE SECTION 로시작하고 EXEC SQL END DECLARE SECTION 로끝난다. VARCHAR 타입은일반적인 CHAR 배열타입과유사하게선언한다. CHAR 타입과는달리배열이아닌형태로는선언이불가능하다. 프리컴파일과정을거치면 VARCHAR 타입은 tbesql/cobol에서정의한구조체타입으로변환된다. DECLARE 영역내에선언된변수는 COBOL 프로그래밍언어의변수와동일한방법으로프로그램내에서사용된다. 하지만, tbesql/cobol 문장내에서의변수는 tbesql/cobol 문장과의구별을위하여반드시콜론 (:) 뒤에와야한다. 이렇게콜론 (:) 뒤에사용된 tbesql/cobol 문장내의변수를입 / 출력변수라고부른다. 다음은 tbesql/cobol 문장내에서사용된입력변수와출력변수에대한예이다. MOVE 20 TO EMPNO. EXEC SQL SELECT ENAME, SALARY, ADDR INTO :ENAME, :SALARY, :ADDR FROM EMP WHERE EMPNO = :EMPNO DISPLAY 'SALARY = ' SALARY. 위의예에서는 SELECT 문장을실행하기위해먼저입력변수 EMPNO 의값을읽어와 tbesql/cobol 문장을완성한다. 그리고나서, SELECT 문장을실행하고실행결과로반환된로우의각컬럼값이출력 12 Tibero tbesql/cobol 안내서

31 변수 ENAME, SALARY, ADDR에할당된다. 출력변수 ENAME, SALARY, ADDR은 COBOL 프로그래밍언어의변수와마찬가지로사용될수있다. 만약 SELECT 문장의실행결과로반환된로우가없거나둘이상의로우가반환되면에러가발생한다. 이러한경우에러를처리하는루틴이미리정의되어있으면그루틴을실행하게되고, 그렇지않으면프로그램을종료한다 ROWID ROWID 타입은로우의물리적인위치정보를포함하는데이터타입이다. tbesql/cobol에서는 ROWID 를위한별도의데이터타입을제공하지않는다. PIC X(n) 타입또는 VARCHAR(VARYING) 타입을이용해데이터타입을변환하여사용해야한다. ROWID 타입의값은다음의그림에서처럼 4부분으로구성된다. [ 그림 2.1] ROWID의구성 문자열변수에저장되는 ROWID 값은전체 18byte 를가지므로, 문자열변수의길이는 NULL 값을포함하 여최소한 19 byte 가되어야한다. Tibero 의데이터베이스에서는다른형태로저장된다. 참고 ROWID 타입에대한자세한내용은 "Tibero SQL 참조안내서 " 를참고한다. 다음은 ROWID 타입을사용하는예이다. [ 예 2.3] ROWID 타입의사용 EXEC SQL BEGIN DECLARE SECTION 01 ROWID PIC X(20). EXEC SQL END DECLARE SECTION... EXEC SQL SELECT ROWID,... INTO :ROWID,... FROM EMP WHERE EMPNO = :EMPNO DISPLAY 'rowid = ' ROWID. 제 2 장데이터타입 13

32 ROWID 의값은이처럼출력변수로사용될뿐만아니라 SELECT 문장의 WHERE 절이나 INSERT 문장 에서입력변수로사용될수도있다. 위의 [ 예 2.3] 을실행하면다음과같은내용이출력된다. rowid = AAAABkAAUAAAAD6AAA VARCHAR VARCHAR타입은 Tibero의데이터타입의 VARCHAR 타입을 tbesql/cobol 프로그램에서사용하기위해새롭게정의한데이터타입이다. VARCHAR 타입은 RAW, DATE, ROWID 타입에도대응하여사용할수있다. VARCHAR 타입의변수선언 VARCHAR 타입의변수선언은 COBOL 프로그래밍언어에서 PIC X(n) 타입의배열변수를선언하는것과동일한데, 마지막에 VARYING 키워드를삽입한다. PIC X(n) 과마찬가지로문자열의최대크기를반드시지정해주어야한다. 다음은 VARCHAR 타입의변수를선언하는예이다. [ 예 2.4] VARCHAR 타입의변수선언 01 USERNAME PIC X(16) VARYING. 위의 [ 예 2.4] 에서선언된 VARCHAR 타입의변수는프리컴파일러를통하여다음과같은구조체타입의변수로변환된다. [ 예 2.5] VARCHAR 타입이변환된구조체 01 USERNAME. 03 USERNAME-LEN PIC S9(4) COMP USERNAME-ARR PIC X(9). VARCHAR 타입의변수의참조와일관성 VARCHAR 타입의변수를선언할때를제외하고, VARCHAR 타입의변수를사용하기위해서는프리컴파일러가변환한구조체의문법을따라야한다. 예를들어, 위의 [ 예 2.4] 에서선언한 USERNAME을출력하고자한다면, 프리컴파일러에의해변환된 [ 예 2.5] 의구조체를출력하는문법에맞춰다음과같이코드를작성하여야한다. 14 Tibero tbesql/cobol 안내서

33 DISPLAY USERNAME-ARR. 또는 DISPLAY USERNAME-ARR IN USERNAME. VARCHAR 구조체내의변수 LEN과 ARR은입력변수일때이든출력변수일때이든상관없이항상일관성을유지하여야한다. 즉, 다음과같은조건을만족해야한다. [ 예 2.6] VARCHAR 변수의일관성 LENGTH(USERNAME-ARR) EQUALS USERNAME-LEN VARCHAR 타입의변수가입력변수로사용되었는지, 출력변수로사용되었는지에따라서위의조건을 만족시키기위한방법은다르다. VARCHAR 타입의변수 입력변수 입력변수로사용된경우, tbesql/cobol 프로그램내에조건을유지시키 는코드를작성해야한다. 조건을만족하지않는다면 tbesql/cobol 라이브러리에서는 LEN 변수를 우선적으로참조한다. 출력변수 출력변수로사용된경우, tbesql/cobol 라이브러리내에서자동으로조 건을유지시킨다. NULL 값의처리 VARCHAR 타입의변수의값이 NULL 인경우에는프리컴파일러를통해변환된구조체내의변수 ARR 과 LEN 의값은다음과같다. ARR EQUAL Z"" LEN SQUAL 0 VARCHAR 타입의변수의값이 NULL 일때, VARCHAR 타입의변수가입력변수로사용되었는지, 출력 변수로사용되었는지에따라, 변환된구조체내의멤버변수 ARR 과 LEN 의값은다르다. VARCHAR 타입의변수 입력변수 입력변수인경우에는 LEN 변수에 0 을할당하는코드를작성해야한다. 만약 ARR 문자열의길이가 0 이아니더라도 LEN 변수를먼저참조하므로 NULL 로인식한다. 출력변수 출력변수인경우에는 ARR 과 LEN 의값을 tbesql/cobol 라이브러리에서 자동으로설정해준다. 제 2 장데이터타입 15

34 다음은 VARCHAR 타입의출력변수 ADDR 의값으로 NULL 이반환되었는지검토하여출력하는예이다. 01 ADDR PIC X(32) VARYING.... EXEC SQL SELECT ADDR INTO:ADDR FROM EMP WHERE EMPNO = 20 IF (ADDR-LEN EQUALS 0) DISPLAY 'ADDR = NULL' ELSE DISPLAY 'ADDR = ' ADDR-ARR END-IF 구조체 tbesql/cobol 프로그램에서도 COBOL 프로그래밍언어의구조체를사용할수있다. tbesql/cobol 프로그램의 SELECT 문장에서는질의결과로반환되는컬럼의개수만큼 INTO 절에출력변수를명시해야한다. 이런경우에 INTO 절에명시될다수의출력변수를한데묶어구조체를만들고, INTO 절에이구조체변수하나만명시해프로그램을간소화할수있다. 구조체변수를사용할때에유의할점은 SELECT 문장의결과로우내의컬럼의순서와구조체변수내의변수의순서가같아야한다는점이다. 다음은세개의출력변수를포함하는구조체를사용한예이다. EXEC SQL BEGIN DECLARE SECTION 01 EMP. 03 ENAME PIC X(20) VARYING. 03 SALARY PIC S9(7) COMP ADDR PIC X(32) VARYING.... EXEC SQL END DECLARE SECTION... EXEC SQL SELECT ENAME, SALARY, ADDR INTO :EMP FROM EMP WHERE EMPNO = :EMPNO 구조체변수는 INSERT 문장등에서입력변수로사용될수도있다. 이때에도출력변수와동일하게하나 의구조체변수만사용할수있으며, 구조체내부에삽입하려는컬럼과같은순서로변수가정의되어있어 야한다. 16 Tibero tbesql/cobol 안내서

35 다음은세개의컬럼에값을삽입하는예이다. MOVE Z"Smith" TO ENAME-ARR IN ENAME IN EMP. MOVE TO SALARY IN EMP. MOVE Z"Los Angeles" TO ADDR-ARR IN ADDR IN EMP. EXEC SQL INSERT INTO EMP(ENAME, SALARY, ADDR) VALUES (:EMP) 지시자 일반프로그램과달리 tbesql/cobol 프로그램에서만사용되는변수로지시자 (INDICATOR) 변수가있다. tbesql/cobol 문장을통해데이터베이스와 tbesql/cobol 프로그램간에데이터를주고받을때, 지시자변수는전달된데이터에대한정보를저장하고있다. 지시자변수의선언 지시자변수는 PIC S9(4) COMP-5 타입을가지며, 반드시 DECLARE 영역안에선언되어야한다. SELECT 문장에사용된지시자변수는 INTO 절에서 INDICATOR 키워드와콜론 (:) 다음에오거나, INDI CATOR 없이데이터변수바로뒤에콜론 (:) 과함께올수도있다. 다음은 SELECT 문장에서출력변수와지시자변수가사용된예이다. [ 예 2.7] 출력변수와지시자변수 EXEC SQL BEGIN DECLARE SECTION 01 IND-ENAME PIC S9(4) COMP IND-ADDR PIC S9(4) COMP EXEC SQL END DECLARE SECTION... EXEC SQL SELECT ENAME, ADDR INTO :ENAME INDICATOR :IND-ENAME, :ADDR INDICATOR :IND-ADDR FROM EMP WHERE EMPNO = :EMPNO 위의예에서는출력변수 ENAME 에대응되는지시자변수로 IND-ENAEM 이사용되었고, 출력변수 ADDR 에대응되는지시자변수로는 IND-ADDR 가사용되었다. INDICATOR 키워드를명시하지않고다음과같이작성해도위의 [ 예 2.7] 문장과동일한의미를갖는다. 제 2 장데이터타입 17

36 EXEC SQL SELECT ENAME, ADDR INTO :ENAME :IND-ENAME,:ADDR :IND-ADDR FROM EMP WHERE EMPNO = :EMPNO 다음은출력변수와함께사용된지시자변수값의의미를정리한표이다. tbesql/cobol 프로그램에서 는필요한경우지시자변수의값을검토하여그값에따른처리를해주어야한다. 지시자변수의값 0-1 > 0 데이터값이성공적으로저장되었다. 데이터값이 NULL이다. 문자열데이터변수에저장된값이잘린 (truncated) 값이다. 지시자변수에주어진값은실제데이터베이스에저장된문자열의길이이다. 다음은 INSERT 문장에서입력변수와함께지시자변수를사용한예이다. [ 예 2.8] 입력변수와지시자변수 01 ENAME PIC X(24) VARYING. 01 ADDR PIC X(36) VARYING. 01 IND-ADDR PIC S9(4) COMP EMPNO PIC S9(9).... MOVE Z"Peter" TO ENAME-ARR. MOVE Z"New York" TO ADDR-ARR. MOVE -1 TO IND-ADDR. MOVE 25 TO EMPNO. EXEC SQL INSERT INTO EMP (ENAME, ADDR, EMPNO) VALUES (:ENAME, :ADDR INDICATOR :IND-ADDR, :EMPNO) 위의예에서는입력변수로 ENAME, ADDR, EMPNO 가사용되었으며, 입력변수 ADDR 에대응되는지시 자변수로 IND-ADDR 이사용되었다. INDICATOR 키워드를명시하지않고다음과같이작성해도위의 [ 예 2.8] 문장과동일한의미를갖는다. EXEC SQL INSERT INTO EMP (ENAME, ADDR, EMPNO) VALUES (:ENAME,:ADDR:IND-ADDR, :EMPNO) 18 Tibero tbesql/cobol 안내서

37 위의예에서는 INDICATOR 키워드를생략하고입력변수 ADDR 뒤에지시자변수 IND-ADDR 을바로붙 여서명시하였다. 지시자변수값이 -1 인경우에는입력변수의값이 NULL 이라는의미이다. 이때, 입력변수에저장된실제 값은무시된다. 따라서, 지시자변수의값이 -1 인경우앞의 INSERT 문장은다음과같이고쳐써도된다. EXEC SQL INSERT INTO EMP (ENAME, ADDR, EMPNO) VALUES (:ENAME, NULL, :EMPNO) 지시자변수값이 -1인경우는입력변수 ADDR의값이 NULL이라는것이므로입력변수와지시자변수를명시할필요없이 NULL만명시해도된다. 다음은입력변수와함께사용된지시자변수값의의미를정리한표이다. 지시자변수의값 -1 >= 0 데이터값이 NULL 이다. 입력변수에저장된값을그대로사용한다. 지시자변수를사용하지않고 tbesql/cobol 프로그램을작성할수도있지만, SQL 문장의질의결과로 반환되는값에대해충분히알고있지않다면지시자변수를사용하여검토하는코드를삽입하는것이좋 다. 구조체타입의지시자 SELECT 문의 INTO 절에구조체변수와지시자변수를함께사용하는경우, 지시자변수역시마찬가지로별도의구조체변수로구성해야한다. 이러한지시자변수를구조체타입의지시자 (STRUCTURAL IN DICATOR) 라고부른다. 구조체타입의지시자도출력구조체변수를구성하는것과마찬가지로질의결과컬럼과같은순서로지시자변수가와야한다. 또한모든지시자변수는 PIC S9(4) COMP-5 타입을갖는다. 다음은구조체타입의지시자변수를사용하는예이다. EXEC SQL BEGIN DECLARE SECTION 01 EMP ENAME PIC X(24) VARYING. 03 SALARY PIC S9(5). 03 ADDR PIC X(32) VARYING. 01 EMP-IND ENAME-IND PIC S9(4) COMP SAL-IND PIC S9(4) COMP ADDR-IND PIC S9(4) COMP 제 2 장데이터타입 19

38 EXEC SQL END DECLARE SECTION... EXEC SQL SELECT ENAME, SALARY, ADDR INTO :EMP INDICATOR :EMP-IND FROM EMP WHERE EMPNO = :EMPNO 1 컬럼 ENAME, SALARY, ADDR의내용을저장하기위해서구조체타입의변수로 EMP를선언한다. 2 이구조체변수를 SELECT 문장의출력변수로사용하면서, 이에대응되는지시자변수 EMP_IND 역시구조체변수로선언한다. 구조체변수 EMP_IND를정의할때, 구조체내의멤버변수를 EMP에대응되게정의하고, EMP_IND의모든멤버변수를 PIC S9(4) COMP-5 타입으로정의한다. 20 Tibero tbesql/cobol 안내서

39 제 3 장기본프로그래밍 본장에서는 tbesql/cobol 프로그램의문법과실행과정, 런타임에러 (runtime error) 처리, 그리고 tbesql/cobol 문장의실행, 커서를한다 개요 본절에서는 tbesql/cobol 프로그램의문법과런타임에러처리에대해서한다 tbesql/cobol 프로그램의문법 tbesql/cobol 프로그램의문법은다음과같다. SQL 문장의시작과끝 tbesql/cobol 프로그램에포함되는 SQL 문장은항상 EXEC SQL로시작되며 로끝난다. 하나의 SQL 문장은여러줄에걸쳐있을수있다. DECLARE 영역 DECLARE 영역은 BEGIN DECLARE SECTION 으로시작되며, END DECLARE SECTION 으로끝 난다. DECLARE 영역에는변수선언이외에다른코드가삽입되어서는안된다. SQL 문장과함께사용되는입 / 출력변수는항상 DECLARE 영역에선언해야한다. 입 / 출력변수가구조체나배열의형태로선언된경우에도 DECLARE 영역에선언해야한다. 단, 프리컴파일러옵션에따라그렇지않은경우도있다. 프리컴파일러옵션에대해서는 제6 장 tbesql/cobol 프리컴파일러옵션 을참고한다. 입 / 출력변수가아닌일반적인프로그램변수의경우에는 DECLARE 영역밖에선언되어도무방하다. 다음은 DECLARE 영역의예이다. EXEC SQL BEGIN DECLARE SECTION 01 OPERATION PIC X(20) VARYING OCCURS 5 TIMES. 제 3 장기본프로그래밍 21

40 01 TELLER. 03 EMPNO PIC S9(7). 03 ENAME PIC X(10). 03 SALARY PIC S9(5). 01 CNT PIC S9(9). EXEC SQL END DECLARE SECTION 문자열 COBOL 프로그래밍코드에포함된문자열은큰따옴표 (" ") 를사용한다. tbesql/cobol 문장에포함되는문자열은작은따옴표 (' ') 를사용한다. 주석 (Comment) 주석은 COBOL 프로그래밍언어에서사용하는방법이외에두개의마이너스부호 (--) 를이용하는방 법이있다. 두개의마이너스부호 (--) 를사용하는주석은주석의부호 (--) 가시작되는곳에서부터그라인의끝까 지주석으로처리한다. 또한, EXEC SQL 문장에만사용될수있으며, COBOL 프로그래밍코드부분에는사용되지못한다. 다음은주석을사용하는예이다. EXEC SQL SELECT ENAME, SALARY, ADDR INTO :EMP -- 구조체변수를사용한다. FROM EMP WHERE EMPNO = :EMPNO 22 Tibero tbesql/cobol 안내서

41 프로그램의실행과정 다음그림은 tbesql/cobol 프로그램소스코드를실행파일로생성하기위해거치는전과정이다. 프리컴파일과정을제외하면 COBOL 프로그램의경우와별로다르지않다. [ 그림 3.1] tbesql/cobol 프로그램의실행과정 tbesql/cobol 프로그램을작성할때는필요한데이터타입이나함수프로토타입등을이용하기위해 서반드시 SQLCA 파일을포함해야한다. 즉, 아래의내용이항상 tbesql/cobol 프로그램소스코드의 맨위에명시되어있어한다. EXEC SQL INCLUDE SQLCA 만약존재하지않으면프리컴파일러실행후에생성되는 COBOL 코드에자동으로추가된다. 위의 [ 그림 3.1] 의과정을순서대로하면다음과같다. 1. tbesql/cobol program tbesql/cobol 프로그램을작성한뒤소스코드를저장하면.tbco 확장자를갖는파일이생성된다. 2. Precompile 작성된프로그램을실행하려면, 먼저프리컴파일과정을거쳐야한다. tbesql/cobol 의프리컴파일 러를실행하는명령어는 tbpcb 이다. 제 3 장기본프로그래밍 23

42 다음은 emp.tbco 프로그램파일에대해프리컴파일을실행하는예이다. [ 예 3.1] emp.tbco 프로그램의프리컴파일 $ tbpcb emp.tbco 프리컴파일러를실행하는명령어는옵션을포함할수있다. 다음은프리컴파일러옵션을사용하여 COPY 또는 SQLCA ESQL INCLUDE 파일의경로를지정하는예이다. [ 예 3.2] 프리컴파일러옵션을사용한 COPY 또는 SQLCA ESQL INCLUDE 파일의경로지정 $ tbpcb INCLUDE=../include emp.tbco 프리컴파일러옵션에대한자세한내용은 제 6 장 tbesql/cobol 프리컴파일러옵션 을참고한다. 3. General program 프리컴파일의결과로는 COBOL 프로그램소스코드가생성되며, 이때파일의이름은원본파일의이름과동일하고확장자만.cob로변경된다. 예를들어 emp.tbco 파일을프리컴파일하면 emp.cob라는이름을가진파일이생성된다. 4. Compile, Link 프리컴파일이완료된파일은그다음으로컴파일과정과링크과정을거쳐야한다. [ 그림 3.1] 에서는컴 파일과링크과정이따로표현되었지만, 실제로는대개의경우에두과정이함께수행된다. 다음은 [ 예 3.1] 의실행결과로생성된 emp.cob 파일을컴파일하고링크하는예이다. 본예제는 64-bit 머신의 MF-COBOL 컴파일러를사용하는경우이다. $ cob64 -xo emp emp.cob -L$TB_HOME/client/lib -ltbertl -ltbcli -lpthread -lm tbesql/cobol에서는 tbcli 함수도함께사용하기때문에 tbertl 라이브러리이외에 tbcli 라이브러리를함께링크한다. 위의 [ 그림 3.1] 에서링크 (Link) 과정에서링커 (Linker) 의입력으로받아들이는 tbertl 라이브러리는 tbesql/cobol 의함수라이브러리이다. 이라이브러리에는 esql_do 함수등이정의되어있으며, tbesql/cobol 프로그램을안전하고효율적으로실행하기위한여러가지작업을수행한다. 5. Execution code 컴파일과정과링크과정을거치고나면 emp 라는이름의실행파일이생성된다. 24 Tibero tbesql/cobol 안내서

43 런타임에러처리 tbesql/cobol 프로그램내의 SQL 문장을실행했을때, 에러또는경고등의여러가지예외상황이발생할수있다. 예를들면 SELECT 문장의실행결과로반환되는로우가존재하지않거나특정컬럼의일부내용이잘린경우를들수있다. tbesql/cobol 프로그램내에서는에러또는경고상황이발생한경우, 그에대한적절한처리를프로그램내에서수행할수있다. tbesql/cobol에서는이러한런타임에러처리를위해다음의 3가지인터페이스를지원한다. 인터페이스 상태변수 상태변수 (Status Variable) 는임의의 SQL 문장이실행된결과가저장되는변수이다. 프로그램내에서는 SQL 문장을실행한후에상태변수의값을검토하여, 에러또는 경고상황의발생을알수있고, 그에따른처리를수행할수있다. SQLCA SQLCA(SQL 통신영역 : SQL Communication Area) 는임의의 SQL 문장이실행된결 과가저장되는구조체변수이다. 이구조체는 SQLCA 라는이름으로 SQLCA ESQL INCLUDE 파일에정의되어있으며, 상태변수를포함하고있다. 상태변수와마찬가지로, SQL 문장을실행한후에 SQLCA 내의적절한멤버변수의 값을검토하여에러또는경고상황의발생을알수있고, 그에따른처리를수행할수 있다. WHENEVER WHENEVER 문장은에러또는경고상황이발생하면미리정해진특정동작을수행한다. 상태변수나 SQLCA 구조체를이용하면 SQL 문장을실행할때마다에러또는경고상황이발생하였는지검토해야한다. 하지만 WHENEVER 문장을사용하면 tbesql/cobol이자동으로예외상황을검토하고그에따른처리를수행한다 프로그램의구조 tbesql/cobol 프로그램의구조는다음과같다. 변수선언 초기화 데이터베이스작업 종료화 에러처리 제 3 장기본프로그래밍 25

44 변수선언 변수선언부분에는 1.2. 구성요소 에서한 DECLARE 영역이포함된다. tbesql/cobol 문장에서데이터베이스작업에사용될모든변수를 DECLARE 영역에선언해야한다. 데이터베이스작업과관련이없는변수는 DECLARE 영역에포함하지않아도된다. 다음은변수선언의예이다. EXEC SQL BEGIN DECLARE SECTION 01 BRANCH pic x(9) varying. 01 POSTAL pic x(10) varying. 01 REGION pic x(10) varying. 01 OPERATION pic x(20) varying occurs 5 times. 01 TELLER. 03 IDE pic x(5). 03 BR pic x(5). 03 NAMEE pic x(12). 01 TELLER2 occurs 10 times. 03 IDE pic x(5). 03 BR pic x(5). 03 NAMEE pic x(12). 01 IDK pic x(5) occurs 10 times. 01 NAMEK pic x(12) occurs 10 times. 01 CDK pic x(5). EXEC SQL END DECLARE SECTION 초기화 초기화부분에서는다음의두가지를수행한다. 런타임에러가발생했을때, 어떤작업을수행할것인지선언한다. 런타임에러가발생했을때, 수행하는작업에는에러처리함수를호출하는경우, 에러를무시하고프로그램을계속진행하는경우, 프로그램을종료하는경우, 특정위치로이동한후실행을계속하는경우등이있다. 대부분의경우에에러처리를위한함수를미리정의하고그정의된함수를호출한다. 다음은런타임에러가발생했을때,tbesql_error함수를호출하는예이다. EXEC SQL WHENEVER SQLERROR DO CALL "tbesql_error" USING BY REFERENCE SQLCODE IN SQLCA Tibero 의데이터베이스에접속한다. 데이터베이스에접속할때는반드시사용자이름과패스워드를함께명시해야한다. 26 Tibero tbesql/cobol 안내서

45 다음의소스코드는 USERNAME 과 PASSWORD, 이렇게두개의입력변수를이용해데이터베이스에 접속하는예이다. EXEC SQL CONNECT :USERNAME IDENTIFIED BY :PASSWORD 데이터베이스작업 데이터베이스작업부분에서는 tbesql/cobol 문장을사용해데이터베이스질의및갱신을수행한다. 이부분은 tbesql/cobol 프로그램에서가장중요한부분중하나이다. 데이터베이스와관련된작업에는입력변수와출력변수를많이사용하게된다. 데이터베이스질의와관련된소스코드에는커서를선언하고, 이선언된커서를이용해로우를액세스하는코드가포함된다. 다음은데이터베이스작업부분의예이다. EXEC SQL DECLARE C1 CURSOR FOR SELECT * FROM BRANCH ORDER BY BRANCH_CD EXEC SQL OPEN C1 EXEC SQL FETCH C1 INTO :BRANCH, :POSTAL, :REGION 종료화 종료화부분에서는모든데이터베이스작업을마치고커밋을수행하거나롤백을수행한다. 주의 종료화부분이 tbesql/cobol 프로그램에포함되지않으면, 자동으로커밋되지않으므로주의하 도록한다. 다음은데이터베이스에부분롤백을수행한뒤커밋을하는예이다. EXEC SQL ROLLBACK WORK TO SAVEPOINT SP1 EXEC SQL COMMIT WORK 제 3 장기본프로그래밍 27

46 에러처리 에러처리부분에서는에러를처리하기위한코드가포함된다. 에러처리와관련된코드는다른코드와섞여동일한하나의함수안에포함될수도있으며, 별도의함수로정의할수도있다. 다음은에러처리의예이다. IF SQLCODE IN SQLCA IS LESS THAN 0 THEN DISPLAY "connection failed" END-IF 3.3. tbesql/cobol 문장의실행 본절에서는 tbesql/cobol 프로그램에서 SELECT, INSERT, UPDATE, DELETE 문장을실행하는방법에대해한다. 각문장에는입 / 출력변수가사용되는데, 입 / 출력변수는각문장내에포함된스키마객체와구별하기위하여반드시앞에콜론 (:) 이와야한다 SELECT SELECT 문장은데이터베이스에질의를수행하고결과로우를반환하는문장이다. 결과로우의개수는 보통하나이상이지만하나도없을수도있다. INTO 절과출력변수 tbesql/cobol 프로그램내에서사용되는 SELECT 문장은일반 SELECT 문장과같은문법을가지며, 다만 SELECT 리스트다음에결과로우의각컬럼값을출력변수에저장하기위해 INTO 절이삽입된다. 다음은 SELECT 문장의 INTO 절에출력변수가사용된예이다. EXEC SQL SELECT A INT :COL-A FROM TAB1 다음은 SELECT문장의 INTO 절에포함되는출력변수에대한이다. 컬럼값과출력변수의대응 INTO절에포함되는출력변수는 SELECT 리스트내의컬럼과같은개수이어야하며, 지시자변수와함께사용될수있다. 질의결과로반환된로우의각컬럼값은컬럼값과동일한순서로대응되는각각의출력변수에저장된다. 출력변수에저장될때, tbesql/cobol 프로그램에서는필요한경우데이터타입의변환을수행한다. 28 Tibero tbesql/cobol 안내서

47 구조체변수 INTO 절에포함되는출력변수에는구조체변수를사용할수도있다. 이때구조체변수에포함된멤버변수의개수는 SELECT 리스트내의컬럼과개수가같아야한다. tbesql/cobol 프로그램에서는결과로우의각컬럼값을구조체변수내의각멤버변수에할당한다. 로우의개수에따른출력변수 SELECT 문장의결과로우의개수가반드시하나라는보장이있다면 INTO 절에단순출력변수를이용하여처리가가능하다. 하지만, 하나이상인경우에는커서를사용하거나 INTO 절에출력배열변수를사용하여야한다. 참고 커서에대한자세한내용은 3.4. 커서 와 3.5. 스크롤가능커서 를, 배열변수에대한자세한내용은 제 4 장배열변수 를참고한다. 다음은결과로우가하나인경우, 이를처리하는예이다. 01 ENAME PIC X(24) VARYING. 01 SALARY PIC S9(5). 01 ADDR PIC X(32) VARYING.... MOVE 20 TO EMPNO. EXEC SQL SELECT ENAME, SALARY * 1.05 INTO :ENAME, :SALARY FROM EMP WHERE EMPNO = :EMPNO DISPLAY 'ENAME = ' ENAME-ARR. 위의예에서컬럼 EMPNO 가테이블 EMP 의기본키컬럼이므로질의결과로우의개수가하나라는것을 알수있다. WHERE 절과입력변수 SELECT 문장내에서변수의위치는 INTO 절에출력변수가포함되는것외에 WHERE 절에입력변수가 포함된다. 다음은 SELECT 문장의 WHERE 절에입력변수가사용된예이다. EXEC SQL SELECT EMP_NO, EMP_NAME INTO :EMP-A, :NAME 제 3 장기본프로그래밍 29

48 FROM EMP WHERE DEPT_NO = :DEPT-NO 다음은 SELECT 문장의 WHERE 절에포함되는입력변수에대한이다. 입력변수의값설정 WHERE 절에포함되는입력변수의값은 SELECT 문장이실행되기전에설정되어있어야한다. 그이유는 SELECT 문장은실행직전에입력변수의값을가져와서 SELECT 문장을완성한뒤에실행되기때문이다. SELECT 문장의실행에필요한입력변수의값은그문장이실행되기직전에읽혀지므로, 입력변수의값은프로그램실행중에동적으로설정할수있다. 입력변수사용의제약 SELECT 문장의입력변수는상수를대신하여사용할수있지만, 스키마객체또는컬럼등의이름을대신하여사용될수는없다. SELECT 문장에부질의 (Subquery) 가사용되는경우에는부질의내에출력변수를포함시킬수는없지만입력변수를포함시킬수는있다. 다음은컬럼의이름을대신하여입력변수가사용된예이다. 01 ENAME PIC X(24) VARYING. 01 SALARY PIC S9(5). 01 COL-NAME PIC X(32) VARYING.... MOVE Z"EMPNO" TO COL-NAME-ARR. EXEC SQL SELECT ENAME, SALARY INTO :ENAME, :SALARY FROM EMP WHERE :COL-NAME = 20 위의예에서 WHERE 절다음에컬럼의이름이나와야하는데, 대신변수가사용되었기때문에잘못되었다 INSERT INSERT, DELETE, UPDATE 문장은공통적으로질의의결과로우가존재하지않으므로출력변수없이입력변수만을사용한다. INSERT 문장에서입력변수는컬럼에삽입할데이터값의위치나부질의내부에사용될수있다. INSERT 문장에서삽입하고자하는컬럼값의일부에대해서만입력변수를사용할수도있다. 30 Tibero tbesql/cobol 안내서

49 다음은일부컬럼에대해서만입력변수를사용하는예이다. 01 ENAME PIC X(24) VARYING. 01 EMPNO PIC S9(9).... MOVE 20 TO EMPNO. MOVE Z"Peter" TO ENAME-ARR. EXEC SQL INSERT INTO EMP (ENAME, SALARY, EMPNO) VALUES (:ENAME, 35000, :EMPNO) 삽입하고자하는모든컬럼값에대하여입력변수를사용하는경우구조체변수를사용할수있다. 이때, 구조체변수에포함된각변수값은삽입하고자하는각컬럼값에대응된다. 다음은구조체변수를사용해데이터를삽입하는예이다. 01 EMP. 03 ENAME PIC X(24) VARYING. 03 SALARY PIC S9(5). 03 EMPNO PIC S9(9).... MOVE Z"Peter" TO ENAME-ARR IN ENAME IN EMP. MOVE TO SALARY IN EMP. MOVE 25 TO EMPNO IN EMP. EXEC SQL INSERT INTO EMP (ENAME, SALARY, EMPNO) VALUES (:EMP) 또한, 부질의에입력변수를사용할수도있다. 다음은부질의를포함하는 INSERT 문장의예이다. 01 SAL-BOUND PIC S9(5).... MOVE TO SAL-BOUND. EXEC SQL INSERT INTO EMP_SUB (ENAME, EMPNO) SELECT ENAME, EMPNO FROM EMP WHERE SALARY >= :SAL-BOUND UPDATE UPDATE 문장도 INSERT 문장과마찬가지로입력변수만을사용한다. UPDATE 문장에서는 SET 절의컬럼값의위치나 WHERE 절에서입력변수가사용될수있다. UPDATE 문장에포함된부질의에서도입력변수를사용할수있다. UPDATE 문장에서는 INSERT 문장에서와달리구조체입력변수를사용할수없다. 제 3 장기본프로그래밍 31

50 다음은일부컬럼값과 WHERE 절내에입력변수를사용하는예이다. 01 ENAME PIC X(24) VARYING. 01 EMPNO PIC S9(9).... EXEC SQL UPDATE EMP SET ENAME = :ENAME, SALARY = SALARY * 1.05 WHERE EMPNO = :EMPNO 다음은부질의에입력변수를사용하는예이다. 01 EMPNO PIC S9(9). 01 SAL-BOUND PIC S9(5).... MOVE 20 TO EMPNO. MOVE TO SAL-BOUND. EXEC SQL UPDATE EMP SET SALARY = (SELECT SALARY FROM EMP WHERE EMPNO = :EMPNO) WHERE SALARY <= :SAL-BOUND DELETE DELETE문장도 INSERT, UPDATE 문장과마찬가지로입력변수만을사용한다. DELETE 문장에서는 WHERE 절에서입력변수가사용된다. DELETE 문장에서도 UPDATE 문장과마찬가지로구조체입력변수를사용할수없다. 다음은입력변수를사용하는 DELETE 문장의예이다. 01 SAL-BOUND PIC S9(5).... MOVE TO SAL-BOUND. EXEC SQL DELETE FROM EMP WHERE SALARY <= :SAL-BOUND 32 Tibero tbesql/cobol 안내서

51 3.4. 커서 본절에서는커서의기본적인사용방법에대하여하고, 갱신및삭제를위한 CURRENT OF 절을설 명한다. 그리고마지막으로사용예제를제시한다 사용방법 SELECT 문을통한질의를수행할때 WHERE 절에기본키제약조건을부여하지않으면, 대개의경우결과로우의개수는하나이상이다. 커서는이렇게반환된다수의결과로우에각각차례로액세스하기위한데이터구조이다. 다음은커서를사용하는순서이다. 1. 커서를사용하기위해서는 DECLARE CURSOR를사용해맨먼저 SQL 문장과연관하여커서를선언해야한다. 커서를선언할때에는항상커서의이름을주어야하며, 커서의선언부는그커서를사용하는다른모든문장의앞에와야한다. 다음은 EMP-CURSOR라는이름으로커서를선언하는예이다. [ 예 3.3] 커서의선언 EXEC SQL DECLARE EMP-CURSOR CURSOR FOR SELECT ENAME, SALARY, ADDR FROM EMP WHERE DEPTNO = :DEPTNO 2. 커서를사용하기위해서는 OPEN을사용해해당커서를열어야한다. OPEN을실행하면연관된 SELECT 문장이실행되어질의의결과로우가반환된다. 또한커서는결과로우중에서맨처음에위치한로우의직전을가리킨다. 첫 FETCH가실행되면첫번째로우를가리키게된다. OPEN을실행할때유의할점은커서를선언할때에 SELECT 문장에포함된입력변수의값은 OPEN이실행될때할당된다는것이다. 다음은 [ 예 3.3] 에서선언한 EMP-CUROSR라는이름의커서에 OPEN을실행하는예이다. [ 예 3.4] OPEN의실행 EXEC SQL OPEN EMP-CURSOR 3. FETCH 를실행해로우에액세스를한다. OPEN 의실행으로는아직로우에액세스할수있는것은아니다. 로우에액세스를하기위해서는 FETCH 를실행해야한다. FETCH 의 INTO 절에는구조체변수나지시자변수를함께사용할수있다. 제 3 장기본프로그래밍 33

52 다음은 FETCH 를실행하는예이다. [ 예 3.5] FETCH의실행 EXEC SQL FETCH EMP-CURSOR INTO :ENAME, :SALARY, :ADDR FETCH를실행하면먼저커서가다음결과로우를가리키게되고, 커서가가리키는결과로우를출력변수에저장한다. FETCH를실행할때마다커서는다음결과로우를가리키고, 결국맨마지막결과로우의범위를넘어 FETCH를실행하면, NOT FOUND 에러가발생한다. 대개의경우 FETCH를무한루프안에포함시키며, NOT FOUND 에러가발행하면루프를빠져나오도록코드를작성한다. 이때, NOT FOUND 에러가발생했을때루프를빠져나오도록하기위해서는 WHENEVER 문장을사용한다. 다음은 WHENEVER 문장을사용하는예이다. [ 예 3.6] WHENEVER 문장의사용 EXEC SQL WHENEVER NOT FOUND GOTO FETCH-END FETCH-LOOP. EXEC SQL FETCH EMP-CURSOR INTO :ENAME, :SALARY, :ADDR... GO TO FETCH-LOOP. FETCH-END. WHENEVER 문장에 GOTO 명령이외에 DO CALL, DO PERFORM 등의명령을사용할수도있다. OPEN을사용해커서를열기전이나 CLOSE를사용해커서를닫은후, 그리고 NOT FOUND 에러가발생한이후에 FETCH를실행하면에러가발생한다. FETCH를이용해다음로우뿐만아니라이전로우를액세스할수도있다. 이러한작업을위해서는스크롤가능커서를선언해야한다. 스크롤가능커서에대해서는 3.5. 스크롤가능커서 를참고한다. 4. 커서사용의마지막단계는 CLOSE를사용해커서를닫는것이다. 커서를닫은이후에는그커서에대해어떠한작업도실행할수없다. 다음은 EMP-CURSOR라는이름의커서에 CLOSE를실행하는예이다. [ 예 3.7] CLOSE의사용 EXEC SQL CLOSE EMP-CURSOR 34 Tibero tbesql/cobol 안내서

53 CURRENT OF 절 커서를이용해 SELECT 문장의실행결과로우를차례로액세스하면서커서가현재가리키고있는결과로우를삭제하거나갱신하려고할때, DELETE 문장과 UPDATE 문장에 CURRENT OF 절을사용한다. SELECT 문장에서 CURRENT OF 절을사용하기위해서는 FOR UPDATE 절을포함해야한다. FOR UP DATE 절은질의결과로반환된로우에잠금 (LOCK) 을설정한다. 잠금이설정된로우는현재트랜잭션이커밋또는롤백되기전까지는다른트랜잭션이로우를갱신하거나삭제할수없다. 다음은 UPDATE 문장에서 CURRENT OF 절을이용하여컬럼 SALARY 만을갱신하는예이다. EXEC SQL DECLARE EMP-CURSOR CURSOR FOR SELECT ENAME, SALARY, ADDR FROM EMP WHERE DEPTNO = :DEPTNO FOR UPDATE OF SALARY... EXEC SQL OPEN CURSOR EMP-CURSOR EXEC SQL WHENEVER NOT FOUND GOTO FETCH-END FETCH-LOOP. EXEC SQL FETCH EMP-CURSOR INTO :ENAME, :SALARY, :ADDR... EXEC SQL UPDATE EMP SET SALARY = SALARY * 1.05 WHERE CURRENT OF EMP-CURSOR... GO TO FETCH-LOOP. FETCH-END. 커서가현재가리키고있는로우는 FETCH 문장을실행하여방금전에컬럼값을읽은로우이다. 커서에대해 OPEN 문장을실행한후에한번도 FETCH 문장을실행하지않았거나모든결과로우를읽고나서 NOT FOUND 에러가반환되었다면커서가현재가리키고있는로우는없다. 현재가리키고있는로우가없는커서를이용하여 DELETE 또는 UPDATE 문장을실행하였다면에러를반환한다. 또한, OPEN 문장을수행하지않았거나 CLOSE 문장을이미수행한커서를이용하여삭제또는갱신을시도할때에도에러를반환한다. CLOSE_ON_COMMIT 옵션이 'YES' 로지정된경우를제외하고는일반적으로커서는현재트랜잭션이커밋또는롤백한후에도사용할수있다. 즉, 커서를이용하여질의결과로우를액세스할수있다. 하지만, FOR UPDATE 절을포함한 SELECT 문장에대한커서는사용할수없다. 왜냐하면, 트랜잭션이커밋되거나롤백되는동시에결과로우에설정되었던잠금을해제해버리기때문이다. 제 3 장기본프로그래밍 35

54 사용예제 다음은커서를사용하는예제프로그램이다. [ 예 3.8] 커서의사용 IDENTIFICATION DIVISION. ************************************************************* PROGRAM-ID. TEST. ************************************************************* ENVIRONMENT DIVISION. ************************************************************* CONFIGURATION SECTION. * SOURCE-COMPUTER. TEST-MACHINE. OBJECT-COMPUTER. TEST-MACHINE. ************************************************************* DATA DIVISION. ************************************************************* WORKING-STORAGE SECTION. EXEC SQL BEGIN DECLARE SECTION USERPASS PIC X(20) VALUE Z"tibero/tmax". 01 ENAME PIC X(24) VARYING. 01 SALARY PIC S9(5). 01 ADDR PIC X(32) VARYING. 01 DEPTNO PIC S9(9). EXEC SQL END DECLARE SECTION EXEC SQL INCLUDE SQLCA PROCEDURE DIVISION. EXEC SQL DECLARE EMP-CURSOR CURSOR FOR SELECT ENAME, SALARY, ADDR FROM EMP WHERE DEPTNO =:DEPTNO EXEC SQL DECLARE EMP-UPDATE-CURSOR CURSOR FOR SELECT SALARY FROM EMP WHERE DEPTNO =:DEPTNO FOR UPDATE OF SALARY EXEC SQL CONNECT :USERPASS DISPLAY "Connected.". 36 Tibero tbesql/cobol 안내서

55 DISPLAY "Enter dept number to show: " ACCEPT DEPTNO. EXEC SQL OPEN EMP-CURSOR EXEC SQL WHENEVER NOT FOUND GOTO FETCH-END FETCH-LOOP. EXEC SQL FETCH EMP-CURSOR INTO :ENAME, :SALARY, :ADDR DISPLAY 'ENAME = 'ENAME-ARR', SALARY = 'SALARY ',ADDR = 'ADDR-ARR GO TO FETCH-LOOP. FETCH-END. EXEC SQL CLOSE EMP-CURSOR DISPLAY "Enter dept number to raise salary: " ACCEPT DEPTNO. EXEC SQL OPEN EMP-UPDATE-CURSOR EXEC SQL WHENEVER NOT FOUND GOTO FETCH-UPDATE-END FETCH-UPDATE-LOOP. EXEC SQL FETCH EMP-UPDATE-CURSOR INTO :SALARY EXEC SQL UPDATE EMP SET SALARY = :SALARY * 1.05 WHERE CURRENT OF EMP-UPDATE-CURSOR GO TO FETCH-UPDATE-LOOP. FETCH-UPDATE-END. EXEC SQL CLOSE EMP-UPDATE-CURSOR EXEC SQLCOMMIT WORK RELEASE tbesql/cobol 문장내에포함되는모든입 / 출력변수는 DECLARE 영역안에서선언한다. 프로그램의맨앞쪽에서커서를선언하고있지만, 변수의선언과는달리커서의선언은어떠한위치에오더라도상관없으며, 그커서가사용되기전에만선언되면된다. 2, 4 두개의커서를선언한다. 각각단순질의와갱신을위한커서인데, 단순질의를위한커서는 EMP- CURSOR이고, 갱신을위한커서는 EMP-UPDATE-CURSOR이다. 3, 5 변수 DEPTNO가두개의커서에공통적으로사용된다. 커서와연관된 SELECT 문장은 OPEN 문장으로커서를열때실행되며, 그직전에입력변수의값을읽어들인다. 따라서, 같은변수를사용하더라도각각의 SELECT 문장이실행될때서로다른 DEPTNO 값이적용될수도있다. 제 3 장기본프로그래밍 37

56 6 프로그램의맨마지막에서는현재트랜잭션을커밋한다. 단순질의를위한커서 EMP-CURSOR 는트 랜잭션커밋후에도계속사용할수있으나, 갱신을위한커서 EMP-UPDATE-CURSOR 는사용할수없다 스크롤가능커서 본절에서는스크롤가능커서 (Scrollable Cursors) 의사용방법을하고, 사용예제를제시한다 사용방법 커서는질의의결과로우를액세스할때, 항상다음에위치한로우만액세스할수있는것에비해, 스크롤가능커서는임의의로우에액세스를할수있다. 예를들어, 스크롤가능커서는현재커서가가리키고있는로우의바로이전로우를액세스하거나전체결과로우중에서 n번째로우를액세스할수있다. 스크롤가능커서는사용방법의편리성과유연성을제공하지만커서와비교했을때, 메모리등의리소스를많이사용할수있으므로프로그램의실행성능을떨어뜨릴수있다. 따라서, 꼭필요한경우가아니라면커서를사용하는것이효율적이다. 다음은커서와스크롤가능커서의차이점이다. 커서 다음위치에있는로우만차례대로액세스를한다. 'DECLARE { 커서이름 } CURSOR' 의형태로선언 한다. FETCH를실행할때, 옵션을지정할수없다. 스크롤가능커서임의의위치에있는로우를액세스할수있다. 'DECLARE { 커서이름 } SCROLL CURSOR' 의형태로선언한다. FETCH를실행할때, 반드시옵션을지정해야한다. 스크롤가능커서에서도커서와동일하게 OPEN 과 CLOSE 를사용한다. 스크롤가능커서가현재가리키 고있는로우에대하여삭제및갱신을수행하고자할때에도커서와마찬가지로 DELETE 문장과 UPDATE 문장내에서 CURRENT OF 절을이용한다. 문장의작성및사용방법은커서와동일하다. 커서와스크롤가능커서의차이점을좀더상세하게하면다음과같다. 스크롤가능커서의선언스크롤가능커서의선언은 SCROLL키워드가포함된다는것을제외하면커서의선언과동일하며다음과같은형태로선언한다. DECLARE { 커서이름 } SCROLL CURSOR 다음의소스코드는스크롤가능커서를선언하는예이다. EXEC SQL DECLARE EMP-SCROLL-CURSOR SCROLL CURSOR FOR SELECT ENAME, SALARY, ADDR 38 Tibero tbesql/cobol 안내서

57 FROM EMP WHERE DEPTNO = :DEPTNO 스크롤가능커서에서의 FETCH 의사용 스크롤가능커서에서 FETCH 를사용할때는항상액세스할대상로우를지정해야한다. 다음은 FETCH 에서액세스를할대상로우를지정할때사용되는옵션이다. 옵션 NEXT 현재커서가가리키고있는로우의다음로우에액세스를한다. PRIOR 옵션과반대이다. 이옵션은생략이가능하다. PRIOR 현재커서가가리키고있는로우의이전로우에액세스를한다. NEXT 옵션과반대이다. FIRST 맨처음에위치한로우에액세스를한다. LAST 옵션과반대이다. LAST 맨마지막에위치한로우에액세스를한다. FIRST 옵션과반대이다. CURRENT RELATIVE offset 현재로우에액세스를한다. 현재커서가가리키고있는로우의다음 offset 번째에위치한로우에액세스를한 다. offset 값이음수라면커서가현재위치에서앞으로이동한다. 예를들어, 현재커서가 8 번째로우를가리키고있는데, 'FETCH RELATIVE -3' 을 실행한다면커서는 5 번째로우를가리키게된다. ABSOLUTE offset 전체로우중에서 offset 번째로우에액세스를한다. 다음은 FETCH 에옵션을사용하는예이다. EXEC SQL FETCH PRIOR EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR EXEC SQL FETCH LAST EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR EXEC SQL FETCH ABSOLUTE 3 EMP-SCROLL-CURSOR 제 3 장기본프로그래밍 39

58 INTO :ENAME, :SALARY, :ADDR 위의예에서는각각순서대로첫번째문장은이전로우를액세스하고, 두번째문장은마지막로우를액세스하고, 세번째문장은전체로우중에서세번째로우를액세스하고있다. 만약액세스하고자하는로우가존재하지않으면 NOT FOUND 에러가반환된다 사용예제 다음은스크롤가능커서를사용하는예제프로그램이다. IDENTIFICATION DIVISION. ************************************************************* PROGRAM-ID. TEST. ************************************************************* ENVIRONMENT DIVISION. ************************************************************* CONFIGURATION SECTION. * SOURCE-COMPUTER. TEST-MACHINE. OBJECT-COMPUTER. TEST-MACHINE. ************************************************************* DATA DIVISION. ************************************************************* WORKING-STORAGE SECTION. EXEC SQL BEGIN DECLARE SECTION 01 USERPASS PIC X(20) VALUE Z"tibero/tmax". 01 ENAME PIC X(24) VARYING. 01 SALARY PIC S9(5). 01 ADDR PIC X(32) VARYING. 01 DEPTNO PIC S9(9). EXEC SQL END DECLARE SECTION EXEC SQL INCLUDE SQLCA PROCEDURE DIVISION. EXEC SQL DECLARE EMP-SCROLL-CURSOR SCROLL CURSOR FOR SELECT ENAME, SALARY, ADDR FROM EMP WHERE DEPTNO = :DEPTNO EXEC SQL CONNECT :USERPASS 40 Tibero tbesql/cobol 안내서

59 DISPLAY "Connected.". MOVE 10 TO DEPTNO. EXEC SQL OPEN EMP-SCROLL-CURSOR * 1st row EXEC SQL FETCH FIRST EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR * last row EXEC SQL FETCH LAST EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR * 5th row EXEC SQL FETCH ABSOLUTE 5 EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR * 8th row EXEC SQL FETCH RELATIVE 3 EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR * 7th row EXEC SQL FETCH PRIOR EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR * 7th row EXEC SQL FETCH CURRENT EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR * 4th row EXEC SQL FETCH RELATIVE -3 EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR * 5th row EXEC SQL FETCH EMP-SCROLL-CURSOR INTO :ENAME, :SALARY, :ADDR EXEC SQL CLOSE EMP-SCROLL-CURSOR EXEC SQL COMMIT WORK RELEASE 위의예에서는주석을삽입하여, FETCH를실행할때마다스크롤가능커서의현재위치를하였다. 또한질의결과로우가 8개이상임을가정한다. SQL 문장내에포함되는모든입 / 출력변수는 DECLARE 영역안에서선언하였다. 커서를선언할때와마찬가지로스크롤가능커서를선언하는문장도, 스크롤가능커서가사용되기전이라면어떤위치에있어도상관없다. 제 3 장기본프로그래밍 41

60

61 제 4 장배열변수 본장에서는배열변수의기본개념과선언방법, 그리고배열변수를 tbesql/cobol 문장에서입 / 출력 변수로사용하는방법을한다 개요 tbesql/cobol 프로그램의배열변수는 COBOL 프로그래밍언어의배열변수의개념과동일하다. 배열은동일한타입의값을여러개저장할수있는데이터구조이다. tbesql/cobol 프로그램에서는 SELECT 문장을실행한뒤다수의결과로우를저장하기위해서출력변수로배열변수를사용하거나, INSERT 문장을사용할때도보통여러개의로우를삽입하게되므로입력변수로배열변수를사용한다. 배열변수가출력변수로사용될때는출력배열변수라고부르며, 입력변수로사용될때는입력배열변수라고부른다. 출력배열변수와입력배열변수가사용되는문장은다음과같다. 출력배열변수 SELECT 입력배열변수 INSERT UPDATE DELETE tbesql/cobol 프로그램에서 tbesql/cobol 문장과 COBOL 프로그램의변수사이에데이터를주고받을때, 배열변수를사용하면다음과같은장점이있다. 간결하고구조적인프로그래밍배열변수를사용하면각각의로우를처리할때마다별도의 SQL 문장을사용하지않고, 모든로우를하나의 SQL 문장으로처리할수있다. 따라서, 프로그램의소스코드를보다단순화할수있으며, 구조적인프로그래밍이가능하다. 제 4 장배열변수 43

62 tbesql/cobol 프로그램의성능향상 클라이언트와서버환경에서는데이터를주고받기위하여많은시간이필요하다. 배열변수를사용해 여러로우를한꺼번에처리하면전송시간이크게줄어든다 배열변수의선언 tbesql/cobol 문장에서사용될배열변수는대체로 COBOL 프로그램에서배열변수를선언하는방법과같다. 다만, tbesql/cobol 문장에사용될배열변수를선언할때에는반드시 DECLARE 영역안에선언해야한다. 다음은배열변수를선언하는예이다. EXEC SQL BEGIN DECLARE SECTION 01 ENAME PIC X(24) OCCURS 50 TIMES VARYING. 01 SALARY PIC S9(5) OCCURS 50 TIMES. 01 ADDR PIC X(32) OCCURS 50 TIMES VARYING.... EXEC SQL END DECLARE SECTION 4.3. 입 / 출력배열변수 본절에서는 tbesql/cobol 문장에서배열변수가입 / 출력변수로사용될경우, 각 tbesql/cobol 문 장에따른배열변수의사용방법에대해한다 SELECT SELECT 문장을실행하여반환되는결과로우의개수가하나이상이라면반드시커서또는배열변수를사용하여야한다. 결과로우의개수를미리예측할수있다면배열변수의크기를충분히선언하여사용할수있다. 만약결과로우의개수가예측하기힘들거나매우크다면, 배열변수와커서를함께사용할수도있다. 배열변수 SELECT문장의실행결과로반환된로우의개수가예측가능하고크기가크지않다면배열변수를이용하여모든결과로우를한번에받을수있다. 예를들어, SELECT 문장의결과로반환되는로우의개수가 50개를넘지않는경우에다음과같이소스코드를작성할수있다. [ 예 4.1] SELECT 문장에서의배열변수의사용 01 ENAME PIC X(24) OCCURS 50 TIMES VARYING. 01 SALARY PIC S9(5) OCCURS 50 TIMES. 01 ADDR PIC X(32) OCCURS 50 TIMES VARYING. 44 Tibero tbesql/cobol 안내서

63 ... EXEC SQL SELECT ENAME, SALARY, ADDR INTO :ENAME, :SALARY, :ADDR FROM EMP WHERE SALARY >= 결과로우의각컬럼값은각배열변수에저장되며, 저장될때같은순서의변수에저장된다. 예를들어, 세번째로우의컬럼값은각각배열변수의세번째위치인 ENAME(3), SALARY(3), ADDR(3) 에저장된 다. SELECT 문장에서배열변수를사용할때는다음의사항에유의해야한다. INTO 절에포함되는출력변수는배열변수와일반변수가동시에함께올수없다. 따라서, INTO 절에포함된모든출력변수는배열변수이거나또는일반변수이어야한다. SELECT 문장의실행결과로반환된로우의전부가아닌일부만을얻고싶을때에도배열변수를이용할수있다. 위의 [ 예 4.1] 에서 SELECT 문장의실행결과로반환된로우가 50개가넘는경우에 50개까지의결과로우만을배열변수에저장한다. SELECT 문장의실행결과로배열변수에저장된로우의실제개수는변수인 SQLERRD(3) IN SQLCA 를통해알수있다. 다음은 SELECT 문의실행후에올수있는소스코드에 SQLERRD(3) IN SQLCA 를사용한예이다. PERFORM VARYING CNT FROM 1 BY 1 UNTIL ( CNT > SQLERRD(3) IN SQLCA ) DISPLAY ENAME(CNT) ', ' SALARY(CNT) ', ' ADDR(CNT) END-PERFORM. DISPLAY 'number of returned rows = ' SQLERRD(3) IN SQLCA 맨마지막라인을보면반환된로우의개수를출력하는데 SQLERRD(3) IN SQLCA를사용하였다. 배열변수의크기가일정하지않은경우에는가장작은배열변수의크기를전체배열변수의크기로설정한다. 예를들어, 다음의소스코드와같이배열변수가선언된경우에배열변수 ENAME과 SALARY의크기는 50이지만, ADDR의크기가 30이므로, SELECT 문의실행후에반환되는결과로우의개수는 30개이다. 01 ENAME PIC X(24) OCCURS 50 TIMES VARYING. 01 SALARY PIC S9(5) OCCURS 50 TIMES. 01 ADDR PIC X(32) OCCURS 30 TIMES VARYING.... 제 4 장배열변수 45

64 EXEC SQL SELECT ENAME, SALARY, ADDR INTO :ENAME, :SALARY, :ADDR FROM EMP WHERE SALARY >= SELECT 문장의 WHERE 절에는배열변수가올수없다. WHERE 절에배열변수가오는경우질의의 의미가모호해지기때문이다. 따라서, 다음과같은소스코드는프리컴파일과정에서에러를반환한다. 01 DEPTNO PIC S9(9) OCCURS 50 TIMES.... EXEC SQL SELECT ENAME, SALARY, ADDR INTO :ENAME, :SALARY, :ADDR FROM EMP WHERE DEPTNO = :DEPTNO 배열변수와함께커서를사용하더라도 SELECT 문장의 WHERE 절에배열변수를사용할수는없다. 배열변수와커서 SELECT 문장의실행결과로반환되는로우의개수를예측하기어렵거나반환되는로우의개수가많다면배열변수와함께커서를이용하여야한다. 이때, 일반커서는물론스크롤가능커서도사용할수있다. 커서와배열변수를함께사용하는방법은커서와일반변수를함께사용하는경우와거의유사하다. 하지만 FETCH를실행할때, 루프를빠져나오는방법이일반변수를사용할때와다르다. 그이유는 NOT FOUND 에러가발생되는경우가차이가있기때문이다. 일반적으로커서를이용하여루프내에서결과로우를액세스할때더이상읽어올결과로우가없으면 NOT FOUND 에러가반환된다. 하지만, 일반변수일때와배열변수일때, NOT FOUND 에러는다음과같은차이가있다. 구분 일반변수 배열변수 일반변수를이용할때에는결과로우를하나씩액세스하므로 NOT FOUND 에러가발생할때에는출력변수에저장된결과로우는없다. 배열변수를이용할때에는배열변수의크기보다작은수의결과로우를반환하더라도 NOT FOUND 에러를반환한다. 즉, NOT FOUND 에러를반환하더라도출력배열변수에는결과로우가포함되어있을수있다. 따라서, 배열변수를사용할때는 SQLCA 의변수를사용해루프를빠져나온다. 커서와함께배열변수가 사용될때에 SQLERRD(3) IN SQLCA 에는 FETCH 문장을수행할때마다현재까지처리된결과로우의 누적개수가저장된다. 그러므로, 이누적개수가더이상증가하지않을때, 루프를중단하면된다. 46 Tibero tbesql/cobol 안내서

65 다음은루프를중단하는소스코드의예이다. [ 예 4.2] SQLERRD(3) IN SQLCA를활용한루프의중단 01 IDX PIC S9(9). 01 COUNT PIC S9(9). 01 BEFORE-COUNT PIC S9(9). 01 CURRENT-COUNT PIC S9(9).... EXEC SQL DECLARE CUR CURSOR FOR MOVE 0 TO BEFORE-COUNT. MOVE 0 TO CURRENT-COUNT.... FETCH. EXEC SQL FETCH CUR INTO... MOVE SQLERRD(3) IN SQLCA TO CURRENT-COUNT. IF (CURRENT-COUNT = BEFORE-COUNT) GOTO FETCH-END. COMPUTE COUNT = CURRERNT-COUNT - BEFORE-COUNT. PERFORM VARYING IDX FROM 1 BY 1 UNTIL ( IDX > COUNT ) * 각로우에대한처리 END-PERFORM. MOVE CURRENT-COUNT TO BEFORE-COUNT. GO TO FETCH. FETCH-END. 위의예에서는두개의새로운변수 BEFORE-COUNT 와 CURRENT-COUNT 를사용하여두변수의값이 일치하면 FETCH 루프를중단한다. 출력배열변수에저장된실제결과로우의개수는변수 COUNT 에저 장된다. 다수의커서 SELECT 문장에는배열변수와함께다수의커서를사용할수도있다. 몇개의커서를사용하더라도하나의커서를사용할때와동일하게처리된다. 동시에여러개의커서를사용할때, SQLCA의변수는각커서마다별도로선언되지는않는다. 따라서변수 SQLCA에저장된데이터는직전에실행된질의또는기타 SQL 문장의결과에대한데이터이다. 다음은각커서에 FETCH를수행할때마다변수 SQLCA에저장되는데이터의예이다. EXEC SQL DECLARE CUR1 CURSOR FOR... EXEC SQL DECLARE CUR2 CURSOR FOR EXEC SQL OPEN CUR1 EXEC SQL OPEN CUR2 제 4 장배열변수 47

66 ... EXEC SQL FETCH CUR1 INTO :ENAME * SQLERRD(3) = 20 EXEC SQL FETCH CUR2 INTO :SALARY * SQLERRD(3) = 30, not 50 EXEC SQL FETCH CUR1 INTO :ENAME * SQLERRD(3) = 40, not 70 EXEC SQL FETCH CUR1 INTO :ENAME * SQLERRD(3) = 60, not 90 EXEC SQL FETCH CUR2 INTO :SALARY * SQLERRD(3) = 60, not 120 위의예에서배열변수 ENAME과 SALARY는각각크기가 20과 30이며, 커서 CUR1과 CUR2에연관된 SELECT 문장의결과로우의개수가충분히크다고가정한다. 스크롤가능커서 SELECT 문장에는배열변수와함께스크롤가능커서를사용할수도있다. 스크롤가능커서는일반커서의경우와거의동일하게사용할수있으나, SQLERRD(3) IN SQLCA에저장되는값의의미가달라진다. 일반커서와스크롤가능커서의 SQLERRD(3) IN SQLCA 값의차이는다음과같다. 구분일반커서의 SQLERRD(3) IN SQLCA 스크롤가능커서의 SQLERRD(3) IN SQLCA 일반커서의경우에는액세스된결과로우의누적개수를저장하고있다. 현재까지액세스된가장마지막결과로우의절대위치를저장하고있다. 스크롤가능커서를사용할때, SQLERRD(3) IN SQLCA에저장되는값은다음과같이결정된다. FETCH 문장을수행할때마다옵션에의하여정해진결과로우의위치로부터배열변수의크기만큼액세스하게되므로, SQLERRD(3) IN SQLCA에저장되는값은 ( 액세스하고자하는결과로우의절대위치 + 배열변수의크기 - 1) 값중에서현재까지가장큰값이된다. 만약액세스를하려는위치에서부터남아있는결과로우의개수가배열변수의크기보다작다면 SQLERRD(3) IN SQLCA에저장되는값은전체결과로우의개수가된다. 결과로우의절대위치값과 SQLERRD(3) IN SQLCA 값은항상 1 이상이다. 다음의소스코드는배열변수와함께스크롤가능커서를사용하는예이다. EXEC SQL DECLARE CUR SCROLL CURSOR FOR Tibero tbesql/cobol 안내서

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

Tmax

Tmax Tmax JTmaxServer User Guide Tmax v5.0 SP1 Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. Copyright Notice Copyright 2009 TmaxSoft Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 263 분당스퀘어 (AK 프라자

More information

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE ALTIBASE HDB 6.3.1.10.1 Patch Notes 목차 BUG-45710 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG-45730 ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG-45760 ROLLUP/CUBE 절을포함하는질의는 SUBQUERY REMOVAL 변환을수행하지않도록수정합니다....

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate ALTIBASE HDB 6.1.1.5.6 Patch Notes 목차 BUG-39240 offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG-41443 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate 한뒤, hash partition

More information

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

강의 개요

강의 개요 DDL TABLE 을만들자 웹데이터베이스 TABLE 자료가저장되는공간 문자자료의경우 DB 생성시지정한 Character Set 대로저장 Table 생성시 Table 의구조를결정짓는열속성지정 열 (Clumn, Attribute) 은이름과자료형을갖는다. 자료형 : http://dev.mysql.cm/dc/refman/5.1/en/data-types.html TABLE

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식

개발및운영 Tibero DB Link (Tibero To Oracle) - Local 방식 Tibero DB Link (Tibero To Oracle) - Local 방식 2014. 04. 16. 목차 1. 구성환경... 3 2. 환경설정... 3 2.1. Tibero 서버 (AIX) 에 Oracle instance Client 파일을업로드... 3 2.2. Oracle Instance Client에대한환경설정등록 (.profile)... 4 2.3.

More information

Tibero

Tibero 릴리즈노트 5 Copyright 2013 TIBERO Co., Ltd. All Rights Reserved. Copyright Notice Copyright 2013 TIBERO Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구서현동 272-6 우 ) 463-824 Restricted Rights Legend All TIBERO

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음

More information

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins Project 1-3: Implementing DML Due: 2015/11/11 (Wed), 11:59 PM 이번프로젝트의목표는프로젝트 1-1 및프로젝트 1-2에서구현한프로그램에기능을추가하여간단한 DML을처리할수있도록하는것이다. 구현한프로그램은 3개의 DML 구문 (insert, delete, select) 을처리할수있어야한다. 테이블데이터는파일에저장되어프로그램이종료되어도사라지지않아야한다.

More information

DBMS & SQL Server Installation Database Laboratory

DBMS & SQL Server Installation Database Laboratory DBMS & 조교 _ 최윤영 } 데이터베이스연구실 (1314 호 ) } 문의사항은 cyy@hallym.ac.kr } 과제제출은 dbcyy1@gmail.com } 수업공지사항및자료는모두홈페이지에서확인 } dblab.hallym.ac.kr } 홈페이지 ID: 학번 } 홈페이지 PW:s123 2 차례 } } 설치전점검사항 } 설치단계별설명 3 Hallym Univ.

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

歯sql_tuning2

歯sql_tuning2 SQL Tuning (2) SQL SQL SQL Tuning ROW(1) ROW(2) ROW(n) update ROW(2) at time 1 & Uncommitted update ROW(2) at time 2 SQLDBA> @ UTLLOCKT WAITING_SESSION TYPE MODE_REQUESTED MODE_HELD LOCK_ID1

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Tibero

Tibero Tibero 클라이언트설치가이드 Copyright 2013 TmaxData Co., Ltd. All Rights Reserved. Copyright Notice Copyright 2013 TmaxData Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구황새울로 329 번길 5 티맥스빌딩우 ) 463-824 Restricted Rights

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100 2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

Lab 3. 실습문제 (Single linked list)_해답.hwp

Lab 3. 실습문제 (Single linked list)_해답.hwp Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

Microsoft Word - PLSQL.doc

Microsoft Word - PLSQL.doc PL/SQL 2008 DB system and programming 보충자료 PL/SQL의실행절 BEGIN 절에서의몇가지규칙 - 실행문은여러라인에걸쳐사용할수있다. - 변수명의명명규칙은오라클의일반적인명명규칙과동일하다. PL/SQL 블록내에서 SQL 문을사용할때에는컬럼명과같은변수명은피해야한다. - SQL에서와마찬가지로날짜와문자는홑따옴표 ( ) 를사용하여인용하여야한다.

More information

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다. 설치및환경설정 JDBC 접속세션구분 / 확인 2013. 11. 01 개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다. 사용하기 JEUS 에서설정방법

More information

Tibero

Tibero Tibero 전환유틸리티가이드 Copyright 2013 TmaxData Co., Ltd. All Rights Reserved. Copyright Notice Copyright 2013 TmaxData Co., Ltd. All Rights Reserved. 대한민국경기도성남시분당구황새울로 329 번길 5 티맥스빌딩우 ) 463-824 Restricted Rights

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

ALTIBASE HDB Patch Notes

ALTIBASE HDB Patch Notes ALTIBASE HDB 6.5.1.5.6 Patch Notes 목차 BUG-45643 암호화컬럼의경우, 이중화환경에서 DDL 수행시 Replication HandShake 가실패하는문제가있어수정하였습니다... 4 BUG-45652 이중화에서 Active Server 와 Standby Server 의 List Partition 테이블의범위조건이다른경우에 Handshake

More information

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용

More information

untitled

untitled 시스템소프트웨어 : 운영체제, 컴파일러, 어셈블러, 링커, 로더, 프로그래밍도구등 소프트웨어 응용소프트웨어 : 워드프로세서, 스프레드쉬트, 그래픽프로그램, 미디어재생기등 1 n ( x + x +... + ) 1 2 x n 00001111 10111111 01000101 11111000 00001111 10111111 01001101 11111000

More information

Microsoft Word - AnyLink Introduction v3.2.3.doc

Microsoft Word - AnyLink Introduction v3.2.3.doc Copyright 2007 Tmax Soft Co., Ltd. All Rights Reserved. AnyLInk Copyright Notice Copyright 2007 Tmax Soft Co., Ltd. All Rights Reserved. Tmax Soft Co., Ltd. 대한민국서울시강남구대치동 946-1 글라스타워 18 층우 )135-708 Restricted

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 ALTIBASE HDB 6.5.1.5.10 Patch Notes 목차 BUG-46183 DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG-46249 [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4 BUG-46266 [sm]

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을 (structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined

More information

10.ppt

10.ppt : SQL. SQL Plus. JDBC. SQL >> SQL create table : CREATE TABLE ( ( ), ( ),.. ) SQL >> SQL create table : id username dept birth email id username dept birth email CREATE TABLE member ( id NUMBER NOT NULL

More information

ESQL/C

ESQL/C 20 장. PL/SQL 커서 주요내용 암시적커서 명시적커서선언 명시적커서열기및닫기 명시적커서에서데이터 Fetch 커서의속성 (%ISOPEN, %ROWCOUNT, %FOUND, %NOTFOUND) 커서 FOR 루프 PL/SQL 의커서 (Cursor) 커서 SQL 문과프로그램실행과정에서결과를저장할수있는오라클메모리구조 ( 개별 SQL 작업영역 ) 암시적커서 (Implicit

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information

윈백및업그레이드 Tibero Flashback 가이드

윈백및업그레이드 Tibero Flashback 가이드 Tibero Flashback 가이드 2014. 05. 09. 목차 1. FLASHBACK 소개... 3 1.1. Flashback 개요... 3 1.2. Flashback 기능... 3 2. FLASHBACK 기능... 3 2.1. FLASHBACK QUERY... 3 2.1.1. FLASHBACK QUERY 개요... 3 2.1.2. FLASHBACK QUERY

More information

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc NTAS and FRAME BUILDER Install Guide NTAS and FRAME BUILDER Version 2.5 Copyright 2003 Ari System, Inc. All Rights reserved. NTAS and FRAME BUILDER are trademarks or registered trademarks of Ari System,

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다. Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:

More information

Tablespace On-Offline 테이블스페이스 온라인/오프라인

Tablespace On-Offline 테이블스페이스 온라인/오프라인 2018/11/10 12:06 1/2 Tablespace On-Offline 테이블스페이스온라인 / 오프라인 목차 Tablespace On-Offline 테이블스페이스온라인 / 오프라인... 1 일반테이블스페이스 (TABLESPACE)... 1 일반테이블스페이스생성하기... 1 테이블스페이스조회하기... 1 테이블스페이스에데이터파일 (DATA FILE) 추가

More information

윤성우의 열혈 TCP/IP 소켓 프로그래밍

윤성우의 열혈 TCP/IP 소켓 프로그래밍 C 프로그래밍프로젝트 Chap 22. 구조체와사용자정의자료형 1 2013.10.10. 오병우 컴퓨터공학과 구조체의정의 (Structure) 구조체 하나이상의기본자료형을기반으로사용자정의자료형 (User Defined Data Type) 을만들수있는문법요소 배열 vs. 구조체 배열 : 한가지자료형의집합 구조체 : 여러가지자료형의집합 사용자정의자료형 struct

More information

KNK_C_05_Pointers_Arrays_structures_summary_v02

KNK_C_05_Pointers_Arrays_structures_summary_v02 Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역 WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역시쉽게해결할수있다. 이번화이트페이퍼에서는 Window Function 중순위 RANK, ROW_NUMBER,

More information

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures

A Hierarchical Approach to Interactive Motion Editing for Human-like Figures 단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct

More information

Microsoft Word - 04_EXCEPTION.doc

Microsoft Word - 04_EXCEPTION.doc ORACLE EXCEPTION INTRODUCTION PLSQL 블록이 PARSE 되는동안에발생되는에러를컴파일에러 (Compilation Error) 라고부르며, PLSQL 블록이실행되는동안에발생되는에러를런타임에러 (Run-Time Error) 라고부르는데, 이런타임에러를오라클에서는예외 (Exception) 라고부른다. 오라클의예외 (Exception) 는크게두가지로구분된다.

More information

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp

Lab 4. 실습문제 (Circular singly linked list)_해답.hwp Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular

More information

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT Study Room Doc.03 : SQLD 예상문제 ( 단답형 ) 네이버 Cafe : 데이터베이스전문가포럼 Study Room http://cafe.naver.com/sqlpd SQLD 26,25,24,21 회기출문제를바탕으로작성 작성자 : 월야루 도움 : 빙수민외카페댓글 2017-11-30 단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770>

<BFDCB1B9C0CE20C5F5C0DAB1E2BEF7C0C720B3EBBBE7B0FCB0E82E687770> 외국인 투자기업의 노사관계 요 약 i ii 외국인 투자기업의 노사관계 요 약 iii iv 외국인 투자기업의 노사관계 요 약 v vi 외국인 투자기업의 노사관계 요 약 vii viii 외국인 투자기업의 노사관계 요 약 ix x 외국인 투자기업의 노사관계 요 약 xi xii 외국인 투자기업의 노사관계 요 약 xiii xiv 외국인 투자기업의 노사관계

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - chap01-C언어개요.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을

More information

Microsoft PowerPoint - e pptx

Microsoft PowerPoint - e pptx Import/Export Data Using VBA Objectives Referencing Excel Cells in VBA Importing Data from Excel to VBA Using VBA to Modify Contents of Cells 새서브프로시저작성하기 프로시저실행하고결과확인하기 VBA 코드이해하기 Referencing Excel Cells

More information

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - 10Àå.ppt 10 장. DB 서버구축및운영 DBMS 의개념과용어를익힌다. 간단한 SQL 문법을학습한다. MySQL 서버를설치 / 운영한다. 관련용어 데이터 : 자료 테이블 : 데이터를표형식으로표현 레코드 : 테이블의행 필드또는컬럼 : 테이블의열 필드명 : 각필드의이름 데이터타입 : 각필드에입력할값의형식 학번이름주소연락처 관련용어 DB : 테이블의집합 DBMS : DB 들을관리하는소프트웨어

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - [2009] 02.pptx 원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4>

<4D F736F F F696E74202D20C1A632C0E520C7C1B7CEB1D7B7A5B0B3B9DFB0FAC1A4> 쉽게풀어쓴 C 언어 Express 제 2 장프로그램개발과정 통합개발환경 통합개발환경 (IDE: integrated development environment) 에디터 + 컴파일러 + 디버거 Visual C++: 이클립스 (eclipse): Dev-C++: 마이크로소프트제작 오픈소스프로젝트 오픈소스프로젝트 통합개발환경의종류 비주얼 C++(Visual C++)

More information

90

90 89 3 차원공간질의를위한효율적인위상학적데이터모델의검증 Validation of Efficient Topological Data Model for 3D Spatial Queries Seokho Lee Jiyeong Lee 요약 키워드 Abstract Keywords 90 91 92 93 94 95 96 -- 3D Brep adjacency_ordering DECLARE

More information

윈도우시스템프로그래밍

윈도우시스템프로그래밍 데이터베이스및설계 MySQL 을위한 MFC 를사용한 ODBC 프로그래밍 2012.05.10. 오병우 컴퓨터공학과금오공과대학교 http://www.apmsetup.com 또는 http://www.mysql.com APM Setup 설치발표자료참조 Department of Computer Engineering 2 DB 에속한테이블보기 show tables; 에러발생

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

슬라이드 1

슬라이드 1 정적메모리할당 (Static memory allocation) 일반적으로프로그램의실행에필요한메모리 ( 변수, 배열, 객체등 ) 는컴파일과정에서결정되고, 실행파일이메모리에로드될때할당되며, 종료후에반환됨 동적메모리할당 (Dynamic memory allocation) 프로그램의실행중에필요한메모리를할당받아사용하고, 사용이끝나면반환함 - 메모리를프로그램이직접관리해야함

More information

슬라이드 제목 없음

슬라이드 제목 없음 4.2 SQL 개요 SQL 개요 SQL은현재 DBMS 시장에서관계 DBMS가압도적인우위를차지하는데중요한요인의하나 SQL은 IBM 연구소에서 1974년에 System R이라는관계 DBMS 시제품을연구할때관계대수와관계해석을기반으로, 집단함수, 그룹화, 갱신연산등을추가하여개발된언어 1986년에 ANSI( 미국표준기구 ) 에서 SQL 표준을채택함으로써 SQL이널리사용되는데기여

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - chap05-제어문.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); 1 학습목표 제어문인,, 분기문에 대해 알아본다. 인 if와 switch의 사용 방법과 사용시 주의사항에 대해 알아본다.

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

쉽게 풀어쓴 C 프로그래밊

쉽게 풀어쓴 C 프로그래밊 Power Java 제 27 장데이터베이스 프로그래밍 이번장에서학습할내용 자바와데이터베이스 데이터베이스의기초 SQL JDBC 를이용한프로그래밍 변경가능한결과집합 자바를통하여데이터베이스를사용하는방법을학습합니다. 자바와데이터베이스 JDBC(Java Database Connectivity) 는자바 API 의하나로서데이터베이스에연결하여서데이터베이스안의데이터에대하여검색하고데이터를변경할수있게한다.

More information

Microsoft Word - PLC제어응용-2차시.doc

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

개발및운영 Tibero Perl 연동

개발및운영 Tibero Perl 연동 Tibero Perl 연동 2014. 05. 27. 목차 1. Windows에서의홖경구성... 3 1.1 Tibero ODBC Driver 설치... 3 1.2. Tool 설치... 5 2. Unix에서의홖경구성... 6 2.1 iodbc 설치... 7 2.2 Tibero 설치... 7 2.3 Iodbc drvier manager 등록... 7 3. Tibero

More information

인디쓔피-IOM핸돜벁닄큐1014pdf, page 59 @ Preflight ( IOM핸돜벁닄큐__1014 )

인디쓔피-IOM핸돜벁닄큐1014pdf, page 59 @ Preflight ( IOM핸돜벁닄큐__1014 ) Publisher: International Organization for Migration 17, route des Morillons 1211 Geneva 19 Switzerland Tel: +41.22.717 91 11 Fax: +41.22.798 61 50 E-mail: hq@iom.int Internet: http://www.iom.int ISBN 978

More information

<C6F7C6AEB6F5B1B3C0E72E687770>

<C6F7C6AEB6F5B1B3C0E72E687770> 1-1. 포트란 언어의 역사 1 1-2. 포트란 언어의 실행 단계 1 1-3. 문제해결의 순서 2 1-4. Overview of Fortran 2 1-5. Use of Columns in Fortran 3 1-6. INTEGER, REAL, and CHARACTER Data Types 4 1-7. Arithmetic Expressions 4 1-8. 포트란에서의

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL 다양한예제로쉽게배우는 오라클 SQL 과 PL/SQL 서진수저 9 장인덱스를배웁니다 1 1. 인덱스란무엇인가? 2 - ROWID ( 주소 ) 조회하기 SCOTT>SELECT ROWID, empno, ename 2 FROM emp 3 WHERE empno=7902 ; ROWID EMPNO ENAME --------------------------------- ----------

More information

문서 템플릿

문서 템플릿 HDSI 툴분석 [sql injection 기술명세서 ] Sql injection 기술명세서 Ver. 0.01 이문서는 sql injection 기술명세가범위입니다. Copyrights Copyright 2009 by CanvasTeam@SpeeDroot( 장경칩 ) All Rights Reserved. 장경칩의사전승인없이본내용의전부또는일부에대한복사, 전재,

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

Microsoft PowerPoint - a10.ppt [호환 모드]

Microsoft PowerPoint - a10.ppt [호환 모드] Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는

More information

Microsoft PowerPoint - chap06-5 [호환 모드]

Microsoft PowerPoint - chap06-5 [호환 모드] 2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.

More information

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

@OneToOne(cascade = = addr_id) private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a 1 대 1 단방향, 주테이블에외래키실습 http://ojcedu.com, http://ojc.asia STS -> Spring Stater Project name : onetoone-1 SQL : JPA, MySQL 선택 http://ojc.asia/bbs/board.php?bo_table=lecspring&wr_id=524 ( 마리아 DB 설치는위 URL

More information

RHEV 2.2 인증서 만료 확인 및 갱신

RHEV 2.2 인증서 만료 확인 및 갱신 2018/09/28 03:56 1/2 목차... 1 인증서 확인... 1 인증서 종류와 확인... 4 RHEVM CA... 5 FQDN 개인 인증서... 5 레드햇 인증서 - 코드 서명 인증서... 6 호스트 인증... 7 참고사항... 8 관련링크... 8 AllThatLinux! - http://allthatlinux.com/dokuwiki/ rhev_2.2_

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

PowerPoint Presentation

PowerPoint Presentation 컴퓨터프로그래밍 Computer Programming 08 포인터기초 목차 1. 포인터변수와선언 2. 간접연산자 * 와포인터연산 3. 포인터형변환과다중포인터 컴퓨터프로그래밍 (Computer Programming) - 08 포인터기초 3 1. 포인터변수와선언 주소개념 주소 address 메모리공간은 8비트인 1 바이트마다순차적인고유한번호 메모리주소는저장장소인변수이름과함께기억장소를참조하는또다른방법

More information

마리오와 소닉 리우 올림픽™

마리오와 소닉 리우 올림픽™ 마리오와 소닉 리우 올림픽 1 사용하기 전에 준비하기 2 유저 콘텐츠에 대하여 3 인터넷으로 이용 가능한 기능 4 보호자 여러분께 5 amiibo란 시작하기 전에 6 게임 소개 7 게임 시작 방법 8 조작 방법 9 데이터 저장과 삭제 통신으로 더욱 즐기기 10 대전 모드 11 포켓 마라톤 12 기록 기타 13 사용 곡명과 작곡자 소개 14 플레이 정보 송신

More information

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp 1 0 1.7 6 5 'A ' '/ u 4 4 2 2 ' " JS P 프로그래밍 " A ', 'b ', ' 한 ', 9, \ u d 6 5 4 ' c h a r a = 'A '; 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 < % @ p a g e c o n te n

More information