//구글광고

오라클 DB - JSP vo(beans), DAO, DTO 생성 스크립트 v3


이전포스트에서 사용하던 스크립트를 조금 다듬었다.

(이전포스트 : http://kimazfactory.tistory.com/40 )

사용방법
1 ) sqlplus 에서 해당 유저로 로그인 하여 mktbltovo3.sql 을 실행한다.


2) ENTER TABLE_NAME > 라는 프롬프트가 뜨면 테이블 명을 입력한다.

이전버전에는 대문자로만 입력했어야 하는데 이제 대소문자 가리지 않게 수정했다.



테이블 이름을 입력하면 해당 테이블에 제일처음

VO를 만들기 위한 선언문이 나오고


2번째 화면에 DAO 에 insert 문을 생성하기 위한 SQL구문과

set 구문을 생성해준다.


이번 버전에서 물음표와 컬럼이름 뒤에 컴마를 수정했다.



3번째 화면에서 셀렉트 구문을 생성하기 위해서 사용하는

Vo에 값을 set 하는 구문을 생성해준다.



버그 제보 및 기능개선을 비밀 댓글로

출처는 표기해서 가져가시고 비밀 댓글로 퍼간다는 멘트정도 남겨주시고

드래그해서 컨트롤 C  안되는 곳에는 절대 배포 금지

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
REM ********************************************************
REM * 명    칭 : mkTblToVo
REM * 목    적 : 테이블 컬럼을 jsp용 VO 로 변경해주는 스크립트
REM *
REM *
REM * 파라미터 :  p1, p2, p3 ..
REM *
REM * 작 성 자 :  2018/06/01  김과장 (kimazfactory@gmail.com)
REM * 수정이력 :   v3 컴마수 맞추기
REM * 메    모 :   12/04 Select DAO 용 구문 추가
REM *                12/06 컴마수 맞추기
REM ********************************************************
SET SERVEROUTPUT ON size 1000000
SET PAGESIZE 10000
SET FEEDBACK OFF
SET ECHO OFF
SET VERIFY OFF
SET LINESIZE 300
SET HEADING OFF
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI';
ACCEPT TABLE_NAME PROMPT 'ENTER TABLE_NAME >'
declare
 lvar_col_name   varchar2(512) := '';
 lvar_data_type  varchar2(512) := '';
 lvar_index1 number:=0;
 lvar_index2 number:=0;
 CURSOR cur_column IS
        select column_name, data_type from user_tab_cols where table_name=upper('&TABLE_NAME'order by COLUMN_ID;
 begin
 OPEN cur_column;
dbms_output.put_line('');
dbms_output.put_line('VO information of table : &TABLE_NAME');
dbms_output.put_line('');
dbms_output.put_line('----------------------------------------------');
dbms_output.put_line('');
 LOOP
      FETCH cur_column INTO lvar_col_name, lvar_data_type;
      EXIT WHEN cur_column%NOTFOUND;
          IF    lvar_data_type = 'VARCHAR2'  then dbms_output.put_line('private String '||lvar_col_name||';');
          ELSIF lvar_data_type = 'NUMBER'  then dbms_output.put_line('private int '||lvar_col_name||';');
          ELSIF lvar_data_type = 'DATE'  then dbms_output.put_line('private Timestamp '||lvar_col_name||';');
          ELSE dbms_output.put_line('--Check it!!!-- '||lvar_col_name||';');
          END IF;
 END LOOP;
  CLOSE cur_column;
  OPEN cur_column;
  dbms_output.put_line('');
  dbms_output.put_line('----------------------------------------------');
  dbms_output.put_line('');
dbms_output.put_line('Insert DAO Query for : &TABLE_NAME');
  dbms_output.put_line('');
  dbms_output.put('String sql="insert into &TABLE_NAME (');
 lvar_index1 :=0;
 LOOP
      FETCH cur_column INTO lvar_col_name, lvar_data_type;
      IF cur_column%NOTFOUND THEN
      EXIT;
      ELSE
           IF  lvar_index1 > 0 THEN
            dbms_output.put(',');
           END IF;
      END IF;
      dbms_output.put(lvar_col_name);
      lvar_index1 :=  lvar_index1+1;
END LOOP;
  dbms_output.put(') values (');
  CLOSE cur_column;
    OPEN cur_column;
 lvar_index1 :=0;
 LOOP
      FETCH cur_column INTO lvar_col_name, lvar_data_type;
      IF cur_column%NOTFOUND THEN
      EXIT;
      ELSE
           IF  lvar_index1 > 0 THEN
            dbms_output.put(',');
           END IF;
      END IF;
      dbms_output.put('?');
      lvar_index1 :=  lvar_index1+1;
 END LOOP;
  dbms_output.put(')";');
  CLOSE cur_column;
  dbms_output.put_line('');
  OPEN cur_column;
lvar_index2:=1;
  LOOP
      FETCH cur_column INTO lvar_col_name, lvar_data_type;
      EXIT WHEN cur_column%NOTFOUND;
          IF    lvar_data_type = 'VARCHAR2'  then dbms_output.put_line('pstmt.setString('||lvar_index2||', dVo.get'||lvar_col_name||'());');
          ELSIF lvar_data_type = 'NUMBER'  then dbms_output.put_line('pstmt.setInt('||lvar_index2||', dVo.get'||lvar_col_name||'());');
          ELSIF lvar_data_type = 'DATE'  then dbms_output.put_line('pstmt.setTimestamp('||lvar_index2||', dVo.get'||lvar_col_name||'());');
          ELSE dbms_output.put_line('--Check it!!!-- '||lvar_col_name||';');
          END IF;
  lvar_index2:=lvar_index2+1;
 END LOOP;
  CLOSE cur_column;
  dbms_output.put_line('');
  dbms_output.put_line('----------------------------------------------');
  dbms_output.put_line('');
dbms_output.put_line('SELECT DAO Query for : &TABLE_NAME');
  dbms_output.put_line('');
  OPEN cur_column;
  lvar_index2:=1;
  LOOP
      FETCH cur_column INTO lvar_col_name, lvar_data_type;
      EXIT WHEN cur_column%NOTFOUND;
          IF    lvar_data_type = 'VARCHAR2'  then dbms_output.put_line('Vo.set'||lvar_col_name||'(rs.getString('||lvar_index2||'));');
          ELSIF lvar_data_type = 'NUMBER'  then dbms_output.put_line('Vo.set'||lvar_col_name||'(rs.getInt('||lvar_index2||'));');
          ELSIF lvar_data_type = 'DATE'  then dbms_output.put_line('Vo.set'||lvar_col_name||'(rs.getTimestamp('||lvar_index2||'));');
          ELSE dbms_output.put_line('--Check it!!!-- '||lvar_col_name||';');
          END IF;
  lvar_index2:=lvar_index2+1;
 END LOOP;
  CLOSE cur_column;
  end;
/
cs




여기서  다운로드 하세요 >>>   

mkTblToVo3.sql




'oracle > sql' 카테고리의 다른 글

[오라클 내장함수1] oracle 문자열 함수  (0) 2018.11.21



ORACLE 내장함수 1. 문자열함수

ORACLE 문자열 함수


아래는 모두 단일행(Single row return) 함수다.



문자열 내장함수 표


 함수명

인자(입력값)

 리턴값 

LOWER

문자열

입력값을 소문자로 반환 

UPPER 

문자열

입력값을 대문자로 반환 

INITCAP 

문자열 

입력값의 첫문자를 대문자로, 나머지는 소문자로 반환 

 LPAD

문자열1, n[문자열 2] 

문자열1의 좌측에 문자열2의 문자를 채워 n자리로 만들어서 리턴 

RPAD 

문자열1, n[문자열 2] 

문자열 1의 우측에 문자열2의 문자를 채워 n 자리를 만들어서 리턴 

 SUBSTR

문자열, n[,m] 

 문자열의 n번째 문자부터 m개의 문자를 리턴

INSTR 

문자열1, 문자2 

문자열1 에서 문자2가 나오는 최초의 위치를 리턴 

 LTRIM

문자열 [.SET] 

문자열의 좌측부터 시작해서 SET문자열이 안나올때까지 문자를 삭제

  RTRIM

문자열 [.SET] 

문자열의 우측부터 시작해서 SET문자열이 안나올때까지 문자를 삭제 

 SOUNDEX

문자열 

지정한 단어와 발음이 동일한 문자열을 리턴 

 TRANSLATE

문자열, S1, S2 

모든 S1을 S2로 치환 한 후 리턴 

 CHR

문자열 

지정된수치와 일치하는 ASCII 코드를 리턴 

 ASCII

문자열 

지정된 문자의 ASCII 코드값을 리턴 

 REPLACE

문자열, STR1, STR2 

문자열에서 STR1을 모두 STR2로 치환후 리턴, STR2를 입력하지 않으면 문자열에서 STR1을 모두 삭제 

 CONCAT

 문자열1, 문자열2

문자열1과 문자열 2를 합쳐서 리턴한다.  

 TRIM

LEADING / TRAILING/ BOTH 혹은 트림할 문자열 + FROM 원문자열 

trim(LEADING 트림할문자열 FROM 원본문자열 ) : 문장의 앞에서 트림할 문자열 제거

trim(TRAILING 트림할문자열 FROM 원본문자열 ) : 문장의 위에서 트림

trim(BOTH 트림할문자열 FROM 원본문자열) : 양쪽에서 다 트림

TRIM(원본문자열) : 앞 뒤 공백을 제거

TRIM() : null 을 반환

LENGTH

 문자열

입력한 캐릭터셋으로 계산한 문자열의 길이를 반환

바이트를 반환 하고 싶으면 LENGTHB를 사용



1. lower 함수


 SQL> select lower('HELLO WORLD') from dual;


LOWER('HELL

-----------

hello world


SQL>




2. upper 함수


SQL> select upper('hello world') from dual;


UPPER('HELL

-----------

HELLO WORLD


SQL>

 


3. initcap 함수


SQL> select initcap('hello WORLD') from dual;


INITCAP('HE

-----------

Hello World


SQL>

 


4. LPAD 함수


SQL> select lpad('hello world',3) from dual;


LPA

---

hel


SQL>




SQL>  select lpad('hello world',166,'o') from dual;


LPAD('HELLOWORLD',166,'O')

--------------------------------------------------------------------------------

oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo

ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooohello

 world




만약 숫자 1, 2 나오는 컬럼이 있는데 이를 6자리로 000001 이렇게 채워야 할때 사용


SQL>  select lpad('1',6,'0') from dual;


LPAD('

------

000001


SQL>



SQL>  select lpad('133',6,'0') from dual;

LPAD('
------
000133

SQL>

이런식으로 6자리로 채워준다.


5. RPAD 함수


 LPAD와는 반대로 우측에 자릿수 채우기 위해서 사용


SQL> select rpad('1',6,'*') from dual;


RPAD('

------

1*****


SQL>


전체 출력하는 개수는 가운데 6의 숫자로 결정 나머지는 기존문자가 자릿수보다 크면
자릿수만큼만 기존문자를 출력
기존문자가 자릿수보다 작으면 작은 부분만큼 변형문자로 채워줌


6. substr 함수


SQL> select substr('Hello World',3) from dual;


SUBSTR('H

---------

llo World


SQL>


문자를 특정 인덱스 부터 시작해서 출력해줌

시작인덱스만 지정하면 시작부터 끝까지

종료인덱스를 지정하면 시작부터 종료까지


SQL> select substr('Hello World',3,5) from dual;


SUBST

-----

llo W


SQL>


 


7.instr 함수

SQL> select INSTR('Hello World','h') from dual;


INSTR('HELLOWORLD','H')

-----------------------

                      0


SQL> select INSTR('Hello World','Hello') from dual;


INSTR('HELLOWORLD','HELLO')

---------------------------

                          1


SQL> select INSTR('Hello World','llo') from dual;


INSTR('HELLOWORLD','LLO')

-------------------------

                        3


SQL>

 



'oracle > sql' 카테고리의 다른 글

oracle vo, DAO, DTO 생성 스크립트 v3  (0) 2018.12.06

+ Recent posts