2012-04-27 8 views
1

SOURCE_TAG 테이블이 있습니다. 모든 삽입 문이 하나의 열에서만 차이가 나는 데이터를 삽입하고자합니다.이 열은 SOURCE_LU 테이블의 기본 키 ID입니다.). 그러나 칼럼의 이드를 얻으려면 몇 가지 작업을해야합니다.SQL에서 루프 및 배열

다음 목록은 stringKeys의 목록이 포함되어 있습니다 (의 열 SOURCE_LU) 그래서 처음 , 나는 목록을받은 후 일부는 오라클 SQL

stringKeys= {"foo","bar","foobar","barfoo",...,"etc"} 
for(each s in StringKeys) { 

SELECT SOURCE_LU where stringKeys=s and Store the id in a list (lets say idList) 

} 

에서 다음 의사 코드처럼 생각해야 ID의 각 ID를 SOURCE_TAG에 각각의 행에 대해 다른 유사한 데이터와 함께 삽입하십시오.

for (each id in listId){ 
    INSERT INTO SOURCE_TAG values (x,y,id) 

} 

죄송합니다. 전 SQL 지식이 거의없는 사람입니다. . 그렇다면 Oracle SQL에서 Arrays와 루프를 어떻게 사용해야합니까? 솔루션이 간단할수록 좋습니다. 고맙습니다.

답변

0

SQL 자체에는 루프가 없지만 Oracle에는 사용할 수있는 PL/SQL이라는 절차 언어가 있습니다. 루프, 조건문, 변수 및 익숙한 다른 것들이 있습니다.

그러나 나는 당신이 성취하고자하는 것이 정규 SQL에서 수행 될 수 있다고 생각합니다. 알았지, 내가 몇 년 동안 오라클 설치를 사용하지 않은 지금 하나에 액세스 할 수 없습니다 만, PostgreSQL을에 당신이 뭔가를 할 수 있습니다

INSERT INTO SOURCE_TAG 
(YEAR_ID,SOURCE_TAG_LU_ID,PRIORITY_ORDER,STATUS_EN,SOURCE_LU_ID) 
select 4 as year_id, 2 as source_tag, 1000 as priority_order, 'ACTIVE' as status_en, id 
from source_lu 
where stringkeys in ('foo', 'bar', ...) 
group by year_id, source_tag, priority_order, status_en, id; 

group by id이 마지막 줄에서 충분히 가능성이 있습니다 .

+0

테이블을 만들 권한이 없습니다. – WowBow

+0

답변을 변경하지 않아도됩니다. 내가 말했듯이 나는 지금 오라클 설치에 접근 할 수 없다. 'x'와'y'가 어디에서 왔는지 말해 주시면 (상수, 계산 또는 다른 데이터를 기반으로하십니까?), 여러분이 쉽게 테스트 할 수있는보다 완벽한 예제를 제공 할 수 있습니다. –

+0

감사합니다. 나는 이것을 시도하고있다. 그 동안 완전한 것을 제공 할 수 있습니다. 작동하는지 알려 드리겠습니다. 여기 – WowBow