0

みなさん、こんにちは:)Oracle10gを使用して列に動的に名前を付けたいと思います。これが私がやりたいことです:

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は変更できます。これはOracleSQLでのみ可能ですか?

よろしくお願いします

4

1 に答える 1

2

列名(エイリアス)はSQLでは静的であり、解析時に(バインド前に)認識されている必要があります。これにより、一部のツールは、クエリが実行される前に、列の数、名前、およびタイプを知ることができます。

したがって、列エイリアスに動的に名前を付けることはできません。


別の見方をすると、バインドは値を置き換えることしかできません。ですから、自問してみてください。?たとえば、バインドを定数式に置き換えることはでき'A'ますか?

  • ?where句のinを置き換えることができます
  • ?列エイリアスのを置き換えることはできません。これにより、無効なクエリが生成されます。
于 2013-02-12T14:12:09.630 に答える