레이블이 Database인 게시물을 표시합니다. 모든 게시물 표시
레이블이 Database인 게시물을 표시합니다. 모든 게시물 표시

2009년 9월 17일 목요일

간단한 Stored Procedure 예제.


Oracle Store Procedure 를 사용하게 되어서, 처음으로 SP를 사용해 보았다.
아래는 아주 간단한 예제..
예제를 쉽게 만들어서 이해 하기 아주 쉬울꺼라고 생각한다..
좀더 응용적인건 계속 추가 예정..

create table MEMBER(
  id         varchar2(12)      primary key,
  name    varchar2(10)      not null
)

insert into MEMBER values('taesuz', '조태수');

create or replace
procedure hello_proc( in_id IN VARCHAR2, out_name OUT VARCHAR2 )
is
  begin
    select name INTO out_name from MEMBER
    where id=in_id;
    dbms_output.put_line( out_name );

EXCEPTION
  WHEN NO_DATA_FOUND THEN
    out_name:='NO_DATA_FOUND';
end hello_proc;


실행:

VARIABLE name varchar2(10);
execute hello_proc('taesuz', :name);
print name;

 

결과값:

name
---
조태수


2008년 5월 27일 화요일

Oracle XE 웹 포트 8080 변경하기..

Tomcat과의 포트 충돌(8080)을 막기 위해 OracleXE의 웹포트를 변경해야 한다.


변경 방법은 오라클에 system 계정으로 로그인 하여, 아래의 쿼리를 수행하면 된다.


현재의 포트 확인 쿼리

SELECT dbms_xdb.getHttpPort() FROM DUAL;


포트 변경 쿼리문.

EXEC DBMS_XDB.SETHTTPPORT(9090);  //9090은 변경하고자 하는 포트 번호


오라클을 재시작해야 하는지 그렇지 않은지는 잘모르겠지만,

느낌상 재시작을 해야 변경된 포트가 적용될 듯 하다.




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

재시작 안해도 바로 반영 되는 듯 합니다.



2008년 2월 18일 월요일

MS-SQL 에 Oralce의 ROWNUM 처럼 구현하기..


Oracle 에서는 rownum >= 10 이런식으로 10개씩 추출할수 있다.

이걸 이용해서 게시판 글수를 추출하기가 편한데, MS-SQL은 그게 없다.

그래서 TOP과 NOT IN을 이용하여 아래와 같은 방법으로 하면 가능하다.


SELECT * FROM (
 SELECT TOP 10 * FROM (
  SELECT * FROM T_BOARD
 ) b
 WHERE SEQ NOT IN (
  SELECT TOP 10 SEQ FROM T_BOARD ORDER BY SEQ DESC
 )
 ORDER BY SEQ DESC
) a


몇개 단위로 보여줄껀지, 빨간 파란색 숫자를 이용하면 가능할 것이다.

2007년 12월 13일 목요일

[MS-SQL] 조건에 따라 Insert 와 Update..

MS-SQL에서 IF문을 이용해 name이란 값을 받아서,

name에 해당하는 날짜에 값이 있으면 Update 없으면 Insert 한다.


[code type=sql] IF (select count(cnt)
     from t_count
     where convert(char(10), getdate(), 120) = regdate
     and pageName='name'
   ) > 0

   BEGIN
        update t_count set pagecnt = pagecnt+1 where pageName='name'
    END

   ELSE
     BEGIN
        insert into t_count values(convert(char(10), getdate(), 120), 'name', 1)     
    END[/code]

2007년 10월 24일 수요일

우편번호 쿼리 문... (zipcode)


2007년 9월 5일자 우편번호 쿼리다..

찾다가 최신께 없어서, http://www.zipfinder.co.kr/zipcode/index.html 에서 다운받아서

기존 DB있으면 지우고, 다시 생성하고 insert 하는 쿼리로 만들어놨다..

Table Name은 zipcode이다.

유용하게 쓰시길...



아참, MySQL용이니.. DB에 따라 조금씩 수정하셔서 쓰심 됩니다.



2007년 10월 22일 월요일

MySQL 쿼리 툴.... SQLyog

이번에 개발을 MySQL + Tomcat 으로 개발 하게 되었는데..

이게 공부할때나 써봤지 실질적으로 거의 Weblogic + Oracle 기반에서만 일을 해와서..

한글때메 헤메고 있었다 -_-;


툴을 SQL-GATE를 쓰고 있었는데, 이게 군대있을때 정품이 있어서 잘되는거 같아서,

깔아서 쓰고 있었는데.. 이게 화근이였다..


하도 안되서 몬가 이상해서.. MS-DOS 콘솔로 데이터를 select해보니 제대로 나온다 -_-


젠장.. Sql-gate때문에.. 잡질했던 거시다..

바로 uninstall ...


그리고.. OKJSP의 Kenu님께서 쓰고 있다고 했던.. SQLyog를 찾게 되었다.


검색하던도중.. 5.x버젼에선 한글이 꺠진다? 라고 나와서.. 허탈해 하다가..

반신반의 하며 설치 하였는데 웃!


잘나온다. 흐흐흐... 그리고 Toad 에서 많이 쓰는 단위별로 실행도 가능하고..

좋네~~ 공짜 버젼과 유로 버젼이 있다.~ 춫현



2007년 10월 15일 월요일

ROWNUM 으로 조건절...



ROWNUM
은 쿼리내에서 사용 가능한 가상컬럼입니다.
ROWNUM에는 숫자 1,2,3,4,...N의 값이 할당됩니다. 여기서 N은 ROWNUM과 함께 사용하는 로우의 수를 의미합니다. ROWNUM의 값은 ROW에 영구적으로 할당되지 않습니다. 테이블의 로우는 숫자와 연계되어 참조될 수 없습니다. 따라서 테이블에서 "ROW 5"를 요청할 수 있는 방법은 없습니다.

ROWNUM 값은 쿼리의 조건절이 처리되고 한 이후, 그리고 SORT, AGGREGATION 수행되기 이전에 할당됩니다.


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


[code type=sql]select * from STUDENT
     where rownum 10 between 100
[/code]

이렇게 하면 데이터가 안나온다..

쿼리를 한번더 묶고, rownum을 데이터화 시키고 사용한다..

[code type=sql]select * from (
     select rownum rnum, NAME, GRADE, AGE from STUDENT
) where rnum 10 between 100[/code]



빙고~

2006년 12월 8일 금요일

서브쿼리. (SubQuery)

서브쿼리.
  - 다른하나의 결과물을 조건절이나 테이블 조건으로 사용할 수 있다.

ex)

[code type=oracle8]
select * from (
  select .... from ..... 조건절
)

select (
  select .... from .... 조건절) from .....
)

select * from ....
where (
  select .... from .....
)
[/code]

머 이런식으로 쓸수 있다. 아직까진 자유자재로 쓰진 못하지만..

따로 뷰형식으로 쓸수 있다는 것.

2006년 11월 24일 금요일

Pro*C 개발을 하면서 느낀점...

Pro*C 에러 났을때.. 확인할것은..

첫째도 쿼리,

둘째도 쿼리,

셋째도 쿼리,

넷째는 클래스..


안되서 쩔쩔매었던게 쿼리문 오류였다니.. 근데 왜 컴파일 할때는 에러가 안나는거야!

꼭.. Toad 에서 돌려보고 테스트 해봐야하는 교훈을 얻었군..


제엔장.. 내 2틀.. ㅜㅜ

2006년 11월 20일 월요일

Decode..

DECODE

Decode(검색컬럼,  조건-1, 결과값-1,

                          조건-2, 결과값-2,..............,기본값);


[code type=oracle8]

SELECT  JOB, SAL,
                 DECODE(JOB, 'ANALYST', SAL * 1.10,
                                      'CLERK',     SAL * 1.15,
                                      'MANAGER', SAL * 1.20, SAL) SALARY
FROM EMP;

[/code]

2006년 11월 16일 목요일

NVL 함수.

- NVL

   문법: NVL( expr1, expr2 ) 형식으로 사용.

   만약 1의 값이 NULL 이라면 2의 값을 반환하고, 1이 NULL이 아니면 그냥 1의 값을 반환한다.


- NVL2

   문법: NVL2(expr, expr1, expr2)

   expr의 값이 null이 아니면 expr1, null이면 expr2

2006년 10월 19일 목요일

Toad 활용 팁..




table desc   : 테이블명에 커서를 놓고 F4

table name 자동완성  : ctrl + .

table colum 보기  : ctrl + T

예전에 실행한 쿼리 보기 : F8

현재 커서상태에서 실행  : Shift + F9, Ctrl + Enter


from http://cafe.naver.com/toadsoft.cafe

F1

Toad 도움말 파일의 SQL Editor 부분이 표시됩니다.

F2

전체 화면 Editor와 Editor/Results 패널 표시 장치 사이를 전환합니다.

<SHIFT>F2

전체 화면 그리드를 전환합니다.

F3

다음으로 일치하는 것을 찾습니다.

<SHIFT>F3

이전에 일치하는 것을 찾습니다.

F4

팝업 창의 테이블, 뷰, 프로시저, 함수, 또는 패키지를 설명합니다.

F5

스크립트로 실행합니다.

F6

커서를 Editor와 Results 패널 사이로 전환합니다.

F7

모든 텍스트를 지웁니다.

F8

이전 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).

F9

실행문을 실행합니다.

<CTRL>F9

실행(구문 분석) 없이 실행문을 검사합니다.

<SHIFT>F9

커서 위치에서 현재 실행문을 실행합니다.

F10

오른쪽 클릭 메뉴를 표시합니다.

F11

Script와 같은 것 실행(=F5)

F12

편집기 내용을 지정된 외부 편집기로 전달합니다.

<CTRL>A

모든 텍스트를 선택합니다.

<CTRL>C

복사

<CTRL>D

프로시저 인수를 표시합니다.

<CTRL>E

현재 실행문에서 Explain Plan을 실행합니다.

<CTRL>F

텍스트를 찾습니다(Find Text 창을 불러옵니다).

<CTRL>G

라인으로 이동합니다(Goto Line 창을 불러옵니다).

<CTRL>L

텍스트를 소문자로 변환합니다.

<CTRL>M

Make Code Statement

<CTRL>N

이름이 지정된 SQL 문을 재호출합니다(SQL Statement Recall 창을 불러옵니다).

<CTRL>O

텍스트 파일을 엽니다.

<CTRL>P

Strip Code Statement

<CTRL>R

검색 및 바꾸기(Find and Replace Text 창을 불러옵니다)

<CTRL>S

파일을 저장합니다.

<SHIFT><CTRL>S

파일을 다른 이름으로 저장합니다.

<CTRL>T

열 드롭다운을 표시합니다.

<CTRL>U

텍스트를 대문자로 변환합니다.

<CTRL>V

붙여넣기

<CTRL>X

잘라내기

<SHIFT><CTRL>Z

마지막으로 취소한 작업을 재실행합니다.

<ALT><UP>

이전 실행문을 표시합니다.

<ALT><DOWN>

다음 실행문을 표시합니다(<ALT><UP>을 사용한 후 사용)

<ALT><PgUp>

이전 탭으로 이동

<ALT><PgDn>

다음 탭으로 이동

<CTRL><ALT><PgUp>

이전 결과 패널 탭으로 이동

<CTRL><ALT><PgDn>

다음 결과 패널 탭으로 이동

<CTRL><HOME>

데이터 그리드에서는 맨 위의 레코드셋으로 이동하며, 결과 그리드에서는 커서가 위치한 행의 첫 번째 열로 이동하고, 편집기에서는 텍스트의 첫 번째 열과 첫 번째 행으로 이동합니다.

<CTRL><END>

데이터 그리드에서는 레코드셋의 맨 끝으로 이동하며, 편집기에서는 텍스트의 마지막 열과 마지막 행으로 이동합니다. 이 단원의 "주의"를 참조하십시오.

<CTRL><SPACE>

코드 완성 템플릿을 활성화합니다.

<CTRL><TAB>

MDI Child 창의 콜렉션을 순환합니다.

<CTRL><ENTER>

커서 이치에서 현재 SQL 문을 실행합니다.

<CTRL>. (마침표)

테이블 이름을 자동으로 완성합니다.