0

大家好 :) 我想用 Oracle 10g 动态命名我的列。这是我想做的事情:

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?

此致

4

1 回答 1

2

列名(别名)在 SQL 中是静态的,并且必须在解析时(绑定之前)知道。这允许一些工具在执行查询之前知道列数、它们的名称和它们的类型。

因此,您不能动态命名列别名。


另一种看待它的方式:绑定只能替换值。所以问问自己:我可以用?常量表达式替换绑定'A'吗?

  • 您可以替换?where 子句中的
  • 您不能替换?列别名中的 ,这将产生无效查询。
于 2013-02-12T14:12:09.630 回答