2016-03-18 5 views
-1

Я использую Eclipse и Oracle SQL Developer. Мои подключения настроены. Я пытаюсь запросить мою базу данных в SQL Developer, передав имя столбца в качестве переменной.Запрос для извлечения всех данных строки для предоставленного имени столбца

Например, я просто хочу, чтобы использовать что-то похожее на это заявление:

select * from CUSTOMERS; 

но позволяет клиентам быть переменными, где я могу пройти в любом имени таблицы.

В настоящее время это тянет все имена столбцов из данного имени столбца и связи:

final String query = "select column_name from all_tab_columns" 
    +" where owner = ?" 
    +" and table_name = ?"; 
try { 
    headers = DAO.useJNDI(jndi) 
     .setSQL(query) 
     .input(1, host) 
     .input(2, tableName) 
     .list(String.class); 

я хочу сделать то же самое, но с рядами. Кто-нибудь знает как это сделать? Об этом я до сих пор думаю:

final String sql = "select *" 
    + " from table_name" 
    + " where owner = ? and table_name = ?";  
try { 
    logger.debug(tableName+sourceJNDI); 
    sourceList = DAO.useJNDI(sourceJNDI) 
     .setSQL(sql) 
     .input(1, host) 
     .input(2, tableName) 
     .list(DatabaseCompareDto.class); 

Основное внимание уделяется операциям SQL. Я знаю, что все остальное работает.

+0

Вы хотите передать имя столбца или имя таблицы? Я действительно не понимаю, в чем проблема, с которой вы сталкиваетесь, или действительно совсем то, что вы пытаетесь сделать. Вы всегда запрашиваете таблицу с именами столбцов owner и table_name? –

+0

Также не знаете, почему вы говорите об SQL Developer и Eclipse - каково соединение? –

ответ

0

Если я правильно читать ваш вопрос, я думаю, что вы хотите, чтобы заменить первый table_name в вашем SQL с, а затем добавить дополнительный .Входной (1, TABLENAME):

final String sql = "select *" 
    + " from ?" 
    + " where owner = ? and table_name = ?";  
try { 
    logger.debug(tableName+sourceJNDI); 
    sourceList = DAO.useJNDI(sourceJNDI) 
     .setSQL(sql) 
     .input(1, tableName) 
     .input(2, host) 
     .input(3, tableName) 
     .list(DatabaseCompareDto.class); 
0

You не может передать имя таблицы в качестве параметра. Вместо того, чтобы тратить энергию на такое предполагаемое общее решение, используйте или создайте небольшой механизм шаблонов, который позволяет заменить имя таблицы в вашем запросе перед отправкой в ​​базу данных.

Смежные вопросы