使用Java PreparedStatements设置列别名
大家好:)我想用Oracle 10g动态命名我的列。以下是我想做的:使用Java PreparedStatements设置列别名,java,oracle,oracle10g,prepared-statement,Java,Oracle,Oracle10g,Prepared Statement,大家好:)我想用Oracle 10g动态命名我的列。以下是我想做的: SELECT NAME as "User.Name", EMAIL as "User.Email.For.Criteria2.at." || CRITERIA FROM CUSTOMERS WHERE CRITERIA = ? 或: 一些Java在所有参数中循环:(这已经在生产中) 我知道我可以用Java构建查询,但我的限制是要避免部署新的Java代码:/。不过我可以修改SQL。这仅适用于Oracle S
SELECT
NAME as "User.Name",
EMAIL as "User.Email.For.Criteria2.at." || CRITERIA
FROM CUSTOMERS
WHERE
CRITERIA = ?
或:
一些Java在所有参数中循环:(这已经在生产中)
我知道我可以用Java构建查询,但我的限制是要避免部署新的Java代码:/。不过我可以修改SQL。这仅适用于Oracle SQL吗
最好的问候列名(别名)在SQL中是静态的,必须在解析时(绑定之前)知道。这允许一些工具在执行查询之前知道列的数量、名称和类型
因此,无法动态命名列别名
另一种看法是:绑定只能替换值。所以问问你自己:我可以用一个常量表达式来代替bind
?
,例如'a'
- 您可以替换where子句中的
?
- 无法替换列别名中的
,这将生成无效查询?
SELECT
NAME as "User.Name",
EMAIL as "User.Email.For.Criteria2.at." || ?
FROM CUSTOMERS
WHERE
CRITERIA = ?
ps.setString(i+1, parameterArray[i]);