2014-02-05 2 views
0

select 문에서 얻은 숫자 배열로 테이블을 만드는 스크립트를 실행해야합니다. 여기 DB2의 배열에서 테이블 만들기

나는 그러나 그것은 내가 처음 절차하지만하셨습니까 '없이 그것을 시도

CREATE OR REPLACE PROCEDURE proc1() 
IS 
BEGIN 


CREATE TABLE TEMP_YEAR 
    ( YEAR_COLUMN integer 
    ); 


INSERT INTO temp_year 
     (year_column) 
     ( 
     select extract(year from datum) from datetest 
    ); 

    FOR vl AS 
    c1 cursor for 
     SELECT year_column FROM temp_year 
     DO 

     EXEC SQL execute immediate 'create table YEAR_' || year_column 
      || ' (year integer, name varchar2(50)); 
    END FOR; 

drop table temp_year; 
    END; 
/

의 DB2 V9.7에서 작동하지 않는 몇 가지 이유 정상 PL SQL 작동하지 않습니다, 지금까지 무엇을 가지고 있습니다 어느 쪽이든을 작동 시키면 ....

+0

두 번째 줄은 아마하지 "입니다" "로"라고합니다. 또한, "작동하지 않는다"는 용어는 너무 모호합니다. 오류가 있거나 원하지 않는 결과가 있습니까? –

+0

여러 오류가 발생했습니다. 첫 번째는 다음과 같습니다 (독일어 번역) SQLCODE : -104 SQLSTATE : 42601 표 TEMP_YEAR (\t YEAR_COLUMN 정수 )는 SQL 문이 유효하지 DB21034E을 만듭니다. "ROCEDURE PROC1() AS"의 SQL0104N이 예기치 않은 토큰 "BEGIN"다음에옵니다. 가능한 토큰은 ":"입니다. LINE NUMBER = 3. SQLSTATE = 42601 – Thevagabond

+0

이 오류는 BEGIN에 있습니다. 수동으로 할당 된 변수의 연도 값을 사용하여보다 간단한 저장 프로 시저로 시작하십시오. – AngocA

답변

1

정말로 배열을 사용하려면 연관 배열을 사용할 수 있습니다. 이렇게하면 원하는 프로세스를 쉽게 작성할 수 있습니다.

은 자세한 내용은이 우수한 기사에서 살펴 : http://www.ibm.com/developerworks/data/library/techarticle/dm-0710arocena/

http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.apdv.sqlpl.doc/doc/c0053499.html

+0

배열을 사용할 필요가 없습니다 ... 목표는 year_ (여기서는 변수 값)와 같은 이름으로 테이블을 만들고 select 문에서 변수의 값을 가져올 수 있습니다. 나는 배열의 도움으로 그것을 할 수있을뿐입니다. 다른 아이디어로도 열 수 있습니다. – Thevagabond

+0

이 경우 질문을 변경하거나 새로운 질문을 만드십시오. 원하는 것을 설명하고 지금까지 무엇을했는지 설명하십시오. 현재 코드가 혼란 스럽기 때문에. – AngocA

+0

감사합니다. 나는 그렇게 할 것이다. – Thevagabond