2012-04-27 4 views
1

У меня есть таблица с именем SOURCE_TAG, где я хочу, чтобы вставить данные, где все операторы вставки будут отличаться только в одном из столбцов (это столбец является первичным ключом идентификатор в таблице называется SOURCE_LU). Однако, чтобы получить идентификатор столбца, я также должен выполнить некоторую работу.Loop и массив в SQL

Следующий список содержит список stringKeys (столбец в SOURCE_LU) Итак, сначала я должен сделать некоторые думают, как следующий код псевдо в Oracle 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) 

} 

после получения списка из идентификаторов вставить каждый идентификатор, чтобы SOURCE_TAG с другими аналогичными данными для каждой строки

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

} 

к сожалению, я ява парень с небольшим знанием SQL , Итак, как использовать массивы и циклы в Oracle SQL? Чем проще решение, тем лучше. Спасибо.

ответ

0

Сам SQL не имеет циклов, но у Oracle есть процедурный язык PL/SQL, который вы можете использовать. Он имеет петли, условные обозначения, переменные и другие вещи, к которым вы могли бы привыкнуть.

Однако, я думаю, что то, что вы пытаетесь выполнить, может быть выполнено в обычном SQL. Имейте в виду, я не использовал установку Oracle в годах, и не имеют доступа к одному прямо сейчас, но в 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

Я изменил ответ, чтобы этого не требовать. Как я уже сказал, у меня нет доступа к установке Oracle прямо сейчас. Если вы скажете мне, откуда взялись «x» и «y» (являются ли они константами, рассчитаны или основаны на других данных?), Я могу привести более полный пример, который вы можете легко проверить. –

+0

Спасибо. Я пытаюсь это сделать. Между тем вы можете дать полный. Я дам вам знать, если это сработает. – WowBow