테이블 A 스키마
id varchar(20) not null primary key,
name varchar(20) not null,
email varchar(50) not null unique
현재 테이블 A에 있는 데이타 건수 : 100 건
제가 하려고 하는 것은 테이블 A에서 총 100건의 데이타를 select하여
다시 테이블 A에 insert하는 것입니다..그렇게 반복적으로 해서,
테이블 A의 데이타를 1,000,000 건으로 만드는 것입니다..즉, 현재
테스트 데이타 DB가 대량으로 필요합니다...
그래서 function으로 만들어 그것을 여러번 루프를 돌려 데이타를 늘리려 합니다..
이때, 문제가 되는 것이 A에서 id,email 컬럼이 유니크하다는 점입니다...
그래서 그 두 컬럼은 임의로 만들어내기로 하였습니다...
테이블 A에서 데이타를 꺼내어 약간의 가공후, 테이블 A에 추가하는 작업을
하려고, 다음과 같이 function을 짯습니다..에러도 안나고 동작을 안하던데..
도움 좀 주십시요..그리고 커서개념은 없나요?
select id from A; 하면 100건이 나오는데, 이것을 레코드별로 조작하려면
어떻게 해야 하나요? 루프는 어떤 식으로 돌리고요?
CREATE SEQUENCE Data_Init_seq INCREMENT 1 START 1;
CREATE FUNCTION data_init() RETURNS INT
AS '
DECLARE
id A.id%TYPE;
name A.name%TYPE;
email A.email%TYPE;
BEGIN
/* 아래에서 name이 100건이 나옵니다..이것을 커서개념으로 돌리면서
유니크 아이디,이메일 발급/삽입 처리를 하려면 어찌 해야 하는지?*/
SELECT name := name FROM A;
SELECT id := ''ID'' || to_char(nextval(''Data_Init_seq''),''FM0000000'');
SELECT email := ''EMAIL'' || to_char(nextval(''Data_Init_seq''),''FM0000000'');
INSERT INTO A VALUES(id,name,email);
|