database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
ㆍDB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
DB2 Q&A 3136 게시물 읽기
No. 3136
function 또는 procedure에서 테이블 이름을 parameter로 받아서 사용하기
작성자
짝퉁헤리포터(bh1004)
작성일
2011-12-21 08:16
조회수
5,479

 안녕하세요?

테스트 환경의 sequence 값을 조정해야 할 일이 많아서 이 부분을 Function이나 Procedure로 만들어 사용하려고 합니다. 

Naming rule은 아래와 같이 sequence는 해당 source object 이름 앞에 's_'라는 prefix를 붙여주었습니다. 그리고,  Object들은 대소문자 구분이 되어 이름 앞 뒤로 따옴표를 붙여야 인식되도록 되어 있습니다.

SequenceName = 's_' + Table/ViewName 

test."t_Table1"

Parameter는  ( SchemaName, SequenceName, ObjectName ) 정도이고, logic 은 아래와 같이 생각하고 있습니다.

  1. v_MaxId = ( SELECT MAX("Id") FROM <SchemaName>."<ObjectName>" )
  2. ALTER SEQUENCE <SchemaName>."<SequenceName>" RESTART WITH v_MaxId 

그런데, 문제가 #1 단계에서 입력받은 table 의 최대 값을 얻기 위해서는 table 이름을 변수로 지정해서 사용해야 하는데 마땅한 방법이 떠오르지 않네요.

혹시 저와 같이 function이나 procedure에서 table 이름을 변수로 받아서 사용하는 방법을 알고 계시는 분이 계실까요?

감사합니다.

이 글에 대한 댓글이 총 2건 있습니다.

이런식으로 해봤어요

db2 -x "select char(trim(seqschema)||'.'||replace(seqname,'S_',''),80) from syscat.sequences where seqschema not like 'SYS%'" > tab.
lst

cat tab.lst

for i in `cat tab.lst`
do

v_MaxId=`db2 -x "select max(ID) from $i"`
SchemaName=`echo $i |cut -f1 -d. `
tabname=`echo $i |cut -f2 -d. `

echo $SchemaName $tabname $v_MaxId

db2 +p -tv <<EOF
ALTER SEQUENCE $SchemaName.S_$tabname RESTART WITH $v_MaxId;
EOF

done

조는 냥이님이 2011-12-21 10:21에 작성한 댓글입니다. Edit

냥이님, 댓글 달아주셔서 감사합니다.

실은 Python code로는 구현해 놓은게 있기는 한데, 테스트 환경이 3~4개에 그에 딸린 Application도 몇 개씩 되서, Application 쪽에서도 불편함없이 사용하도록 하기 위해서 Function/Procedure로 해 볼까했었거든요. 

더 시간 낭비하는 것 보다, 냥이님의 말씀처럼 shell 로 구현하는 것도 나쁘지 않겠네요. 다시 한 번, 의견 감사드립니다.

( 꼬랑지 ) IBM 정도되면 저 정도는 어렵지 않게 사용할 수 있도록 지원해 줘야 하지 않나.... 하는 아쉬움이 좀 있네요. ^^

짝퉁헤리포터(bh1004)님이 2011-12-23 06:20에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
3139as400 db2 + ibatis 사용시 like절 조건 한글 문제
유형근
2012-01-30
7172
3138'FF' hex 데이터 char(1) 입력이 안되나요? [1]
정유락
2012-01-16
5656
3137db2에서는 임의칼럼을 어떻게 생성하나요? [1]
비기너
2012-01-06
6019
3136function 또는 procedure에서 테이블 이름을 parameter로 받아서 사용하기 [2]
짝퉁헤리포터
2011-12-21
5479
3135windows 2008 x64 용 db2 odbc 드라이브 구합니다. [1]
최상진
2011-12-19
5438
3134oracle을 이용한 개발자입니다. db2를 이번에 처음 쓰게 되었는데.ㅜㅜ [2]
Kim gu
2011-12-19
5980
3133db2에서 client 설치파일이라 함은 무엇인가요? [1]
윤상원
2011-12-14
4602
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다