간단한 Stored Procedure 예제.

프로그래밍/Database | 2009/09/17 11:46 | Posted by taesuz

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
---
조태수


크리에이티브 커먼즈 라이선스
Creative Commons License

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


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


현재의 포트 확인 쿼리

SELECT dbms_xdb.getHttpPort() FROM DUAL;


포트 변경 쿼리문.

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


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

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




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

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



크리에이티브 커먼즈 라이선스
Creative Commons License

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


몇개 단위로 보여줄껀지, 빨간 파란색 숫자를 이용하면 가능할 것이다.
크리에이티브 커먼즈 라이선스
Creative Commons License

MSXML 6.0 Download

http://www.microsoft.com/downloads/details.aspx?displaylang=ko&FamilyID=993C0BCF-3BCF-4009-BE21-27E85E1857B1



MS-SQL  Management Studio Express Download.. 링크 입니다.

http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&displaylang=ko



크리에이티브 커먼즈 라이선스
Creative Commons License

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]

크리에이티브 커먼즈 라이선스
Creative Commons License

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

프로그래밍/Database | 2007/10/24 15:00 | Posted by taesuz

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

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

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

Table Name은 zipcode이다.

유용하게 쓰시길...



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



크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍 > Database' 카테고리의 다른 글

MS-SQL Management Studio Express Download..  (0) 2008/01/24
[MS-SQL] 조건에 따라 Insert 와 Update..  (0) 2007/12/13
우편번호 쿼리 문... (zipcode)  (0) 2007/10/24
MySQL 쿼리 툴.... SQLyog  (0) 2007/10/22
ROWNUM 으로 조건절...  (1) 2007/10/15
서브쿼리. (SubQuery)  (0) 2006/12/08

MySQL 쿼리 툴.... SQLyog

프로그래밍/Database | 2007/10/22 11:55 | Posted by taesuz
이번에 개발을 MySQL + Tomcat 으로 개발 하게 되었는데..

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

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


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

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


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


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

바로 uninstall ...


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


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

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


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

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



크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍 > Database' 카테고리의 다른 글

[MS-SQL] 조건에 따라 Insert 와 Update..  (0) 2007/12/13
우편번호 쿼리 문... (zipcode)  (0) 2007/10/24
MySQL 쿼리 툴.... SQLyog  (0) 2007/10/22
ROWNUM 으로 조건절...  (1) 2007/10/15
서브쿼리. (SubQuery)  (0) 2006/12/08
Pro*C 개발을 하면서 느낀점...  (0) 2006/11/24

ROWNUM 으로 조건절...

프로그래밍/Database | 2007/10/15 15:24 | Posted by taesuz


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]



빙고~
크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍 > Database' 카테고리의 다른 글

우편번호 쿼리 문... (zipcode)  (0) 2007/10/24
MySQL 쿼리 툴.... SQLyog  (0) 2007/10/22
ROWNUM 으로 조건절...  (1) 2007/10/15
서브쿼리. (SubQuery)  (0) 2006/12/08
Pro*C 개발을 하면서 느낀점...  (0) 2006/11/24
Decode..  (0) 2006/11/20
TAG oracle, rownum, SQL

서브쿼리. (SubQuery)

프로그래밍/Database | 2006/12/08 11:39 | Posted by taesuz

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

ex)

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

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

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

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

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

크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍 > Database' 카테고리의 다른 글

MySQL 쿼리 툴.... SQLyog  (0) 2007/10/22
ROWNUM 으로 조건절...  (1) 2007/10/15
서브쿼리. (SubQuery)  (0) 2006/12/08
Pro*C 개발을 하면서 느낀점...  (0) 2006/11/24
Decode..  (0) 2006/11/20
NVL 함수.  (4) 2006/11/16

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

첫째도 쿼리,

둘째도 쿼리,

셋째도 쿼리,

넷째는 클래스..


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

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


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

크리에이티브 커먼즈 라이선스
Creative Commons License

'프로그래밍 > Database' 카테고리의 다른 글

ROWNUM 으로 조건절...  (1) 2007/10/15
서브쿼리. (SubQuery)  (0) 2006/12/08
Pro*C 개발을 하면서 느낀점...  (0) 2006/11/24
Decode..  (0) 2006/11/20
NVL 함수.  (4) 2006/11/16
Toad 활용 팁..  (0) 2006/10/19