2014-11-04 1 views
0
Table1 { name = 'bob' job='trucker' gender='male' car='blue' } Table1 { name = 'dave' job='Driver' gender='male' car='red' } Table1 { name = 'jane' job='loader' gender='female' car='purple' } 

table2 (removeID="name" removeKey="jane"} table2 (removeID="car" removeKey="red"} 

Мне нужно знать, что SQL я мог бы использовать, что бы дать следующий результат:Удаление строк из одной таблицы на основе от другой таблицы, которая имеет пару ключ/значение

Table1 { name = 'bob' job='trucker' gender='male' car='blue' } 

я начинаю думать, это не представляется возможным, и что я должен сравнить столбцы на столбцы

+0

Похоже, вам нужен [динамический sql] (http://stackoverflow.com/q/7123659/27439) –

ответ

0

Try что-то вроде

CREATE PROCEDURE DELETE_FROM_TABLE1 
    strSql VARCHAR2(32767); 
BEGIN 
    FOR aRow IN (SELECT * FROM TABLE2) 
    LOOP 
    strSql := 'DELETE FROM TABLE1 WHERE ' || 
       aRow.REMOVEID || '= ''' || 
       aRow.REMOVEKEY || ''''; 

    EXECUTE IMMEDIATE strSql; 
    END LOOP; 
END DELETE_FROM_TABLE1; 

не тестировался на животные - ты будешь первым!

Делитесь и наслаждайтесь.