1

レポート領域の SQL を SELECT * FROM some_table として定義すると、新しい列が some_table に追加されるまでは問題ありませんが、「ORAxxx No data found」エラーで中断します。変更を加えなくても、リージョンに変更を適用するだけで十分なため、修正は簡単です。ただし、堅牢なアプリケーションにはなりません。

新しい列で壊れない SELECT * を許可するパラメーターの組み合わせはありますか? デフォルトの書式設定または見出しを新しい列に適用するだけで十分です。

データ ディクショナリから列リストを作成し、すべてを SELECT ステートメントに連結して評価できることは承知していますが、これはかなり洗練されていないように思えます。

4

2 に答える 2

3

通常SELECT *、次の理由により、クエリの使用はお勧めしません。

  • すべての列を返すと、オプティマイザーが行う作業が少なくなります。
  • 新しい列を追加するとクエリの結果が変更され、予期しない結果が生じるため、アプリケーションの堅牢性が低下します。がなければSELECT *、必要な列を正確に指定することを意味し、新しい列を追加してもアプリケーションには関係ありません。

とにかく、SELECT *ビューの作成、オラクルはすべての列のビューの置き換えを作成し、*APPEXが同じことを行っている可能性があることを覚えておいてください。

于 2009-01-28T12:23:42.910 に答える
2

現在、あなたの地域ソースは(私が推測する)「クエリ固有の列名を使用してクエリを検証する」に設定されています。これは、クエリの各列に対してレポート列が明示的に定義され、SQL が静的であることが期待されることを意味します。

リージョン ソースを「一般的な列名を使用する (実行時にのみクエリを解析する)」に変更すると、新しい列が追加された後も機能し、列タイトルはデフォルトで列名になります。

別のプロパティ「汎用レポート列の最大数」があり、デフォルトは 60 であり、テーブルに追加される将来の列を収容するのに十分な大きさの値に設定する必要があります。

于 2009-01-28T14:38:25.353 に答える