2011-10-15 2 views
0

열 이름에 대한 매개 변수를 사용하여 데이터를 삽입하기 위해 실행할 블록을 사용하지만 열 이름예를 들어 나는이 가능한 경우 잘 모릅니다

의사에 대한 매개 변수를 사용하여 데이터를 삽입 문을 실행하고 삽입 할 블록을 실행 사용하는 예를 찾고 있어요 번호 :

"F"는 필드 이름 "loop_counter"의 이니셜이다
While loop_counter begin 

    Insert into table1 (f1+loop_counter, f2+loop_counter, f3+loop_counter, f4+loop_counter) 
     values (#,#,#,#) 
end 

인 루프 변수

감사

+0

을 당신이 여기에 질문에 대한 대답을 얻었다 생각 - http://stackoverflow.com/questions/7718748/how-to-reference-firled-names-with-variable-in-firebird -stored-procedure-or-exec/7719151 # 7719151? BTW 의사 코드가 틀린 것처럼 보입니다. 모든 필드의 이름이 같을 것입니다 (예 :'f1, f1, f1, f1'). 대신 f1, f2, f3, f4와 같은 것을 원합니까? – ain

+0

네, 다른 이름을 의미하고 솔루션을 실행 블록을 사용하여 찾고 ... 덕분에 – Wel

+0

그럼 정확하게 당신이 찾고있는 명확한 귀하의 질문을 업데이 트하십시오. 또한 PSQL (트리거 또는 저장 프로 시저)이나 DSQL에서 사용하고 싶습니까? – ain

답변

1

EXECUTE STATEMENT 연산자가 필요합니다. 이런 식으로 뭔가를 시도 :

EXECUTE BLOCK 
AS 
    DECLARE VARIABLE s VARCHAR(200); 
    ... 
BEGIN 
    ... 
    WHILE (<some condition with loop_counter>) DO 
    BEGIN 
    s = 'INSERT INTO TABLE1 (F1' || 
     loop_counter || ', F2' || 
     loop_counter || ',F3' || 
     loop_counter || ',F4' || 
     loop_counter || ') VALUES (?, ?, ?, ?)'; 
    EXECUTE STATEMENT (:S) (#,#,#,#); 
    ... 
    END 
    ... 
END