SQL условный оператор - PullRequest
       16

SQL условный оператор

2 голосов
/ 17 августа 2011

Я пытаюсь создать условный оператор в SQL-коде ORACLE. У меня есть функция в Java, которая принимает 2 параметра. getchildren (child1, child2) .. параметры этой функции используются для создания оператора запроса

public ResultSet getchildren(String Child1, String child2) throws SQLException 
{

 stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
 ResultSet.CONCUR_READ_ONLY);


     query ="select * from table1 

            if child1 is not null and child2 is null
            { where child1 = 1 }
            else if child2 is not null AND child1 is null
            {where child2 = 2}
            else
             {//some other where statment } 
            ";



    System.out.println("\nExecuting query: " + query);
    rset = stmt.executeQuery(query);

    return rset;


}

Это явно псевдокод.Мне нужна помощь в создании условного выполнения для предложений , где , чтобы каждое предложение "где" выполнялось, когда его условие действительно.Я пробовал что-то похожее на то, что у меня там, но безуспешно.

Ответы [ 2 ]

3 голосов
/ 17 августа 2011

Используйте StringBuilder для динамического построения вашего запроса.

StringBuilder queryBuilder = new StringBuilder();
queryBuilder.append("select * from table1 ");

if ( child1 != null && child2 == null) 
   queryBuilder.append(" where child1 = 1 ");
else if ( child2 != null && child1 == null)
   queryBuilder.append(" where child2 = 1 ");
else
   queryBuilder.append(" where bla ");

// Execute queryBuilder.toString();
rset = stmt.executeQuery(queryBuilder.toString());
1 голос
/ 17 августа 2011

Создайте запрос, используя StringBuilder по частям. Начните с добавления "select * from table1 where ". Затем напишите свои if операторы на простом Java, и в каждом блоке просто добавьте соответствующее предложение.

...