2013-02-12 4 views
0

Привет всем :) Я хочу динамически назвать мои столбцы с помощью Oracle 10g. Вот то, что я хотел бы сделать:Установить псевдоним столбца с Java PreparedStatements

SELECT 
    NAME as "User.Name", 
    EMAIL as "User.Email.For.Criteria2.at." || CRITERIA 
FROM CUSTOMERS 
WHERE 
    CRITERIA = ? 

Или:

SELECT 
    NAME as "User.Name", 
    EMAIL as "User.Email.For.Criteria2.at." || ? 
FROM CUSTOMERS 
WHERE 
    CRITERIA = ? 

С некоторыми Java пробегаем по всем параметрам с: (это уже в производстве)

ps.setString(i+1, parameterArray[i]); 

Я знаю, Я мог бы построить запрос в Java, но мои ограничения заключаются в том, что следует избегать развертывания нового Java-кода: /. Однако я могу изменить SQL. Это возможно только с Oracle SQL?

С наилучшими пожеланиями

ответ

2

имена столбцов (псевдоним) являются статическими в SQL и должны быть известны во время синтаксического анализа (до привязок). Это позволяет некоторым инструментам знать количество столбцов, их имена и их типы до выполнения запроса.

Следовательно, вы не можете назвать псевдонимы столбцов динамически.


Другой способ взглянуть на это: привязки могут только заменять значения. Поэтому спросите себя: могу ли я заменить привязку ? постоянным выражением, например 'A'?

  • вы можете заменить ? в пункте, где
  • вы не можете заменить ? в псевдониме колонку, это будет производить недействительный запрос.
+0

Aw Гоша, я думал, что только часть базы данных ограничивается этим, а не JDBC делает некоторые ранние компиляции:/ – BenoitParis

+0

Если мне не изменяет память, то посылается запрос, который будет обработан при использовании [ 'Connection.prepareStatement'] (http://docs.oracle.com/javase/6/docs/api/java/sql/Connection.html#prepareStatement(java.lang.String)), перед любой возможностью установить значения привязки. –

+0

Арг, спасибо за ответ. – BenoitParis

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