0

本当に大きな問題がありました。Oracle-DBからのデータを使用してtxtファイルを作成するためのアプリを作成しています。

そのため、実際にはdata_default列(タイプLONG)で問題が発生しました。

いくつかのコードを投稿しましょう:

これが私の選択です:

SELECT table_name || '.' || column_name, data_precision, data_type, nullable, data_length, data_default 

データを読み取る私の方法は次のとおりです。

string dataDefault = (dataReader[5].GetType() == typeof(DBNull)) ? "" : Convert.ToString(dataReader.GetString(5))

したがって、これは「きれいな」方法ではないかもしれませんが、ここではLONG​​データ型に大きな問題があります。この方法でdata_defaultからデータを取得できません。インターネットで検索しましたが、C#コード内でこの問題を解決したいと思います。それが不可能な場合は、私のSQL知識を過大評価しないでください;-)

良い一日を、クレメンス

4

1 に答える 1

0

答えが出ました!長い間検索と偽造を行った後、最終的な解決策を投稿したいと思います。

create or replace function get_col_default
(
p_owner in all_tab_cols.owner%type,
p_table_name in all_tab_cols.table_name%type,
p_column_name in all_tab_cols.column_name%type
)
return varchar2
as
        l_data_default LONG;
begin
        select data_default into l_data_default
          from all_tab_cols
         where owner = p_owner
           and table_name = p_table_name
           and column_name = p_column_name;

        return substr( l_data_default, 1, 4000 );
end;

次に、次のようなクエリを作成できます。

select a.table_name, a.COLUMN_NAME, get_col_default('exOwner',a.table_name,a.COLUMN_NAME) 
from all_tab_columns a
where  table_name like 'table%'
and owner like 'exOwner'

これの良いところは、その関数を非常に簡単に拡張でき、1つの結果/実行に制限されないことです。(私はいくつかのさらなるアイデアでこの問題を抱えていました)

良い1日を!;)

于 2012-11-27T12:29:43.300 に答える