2016-04-22 17 views
0

列(NAME、CODE、DESCRIPTION)を持つ "GROUP_DETAILS"という名前のテーブルがあるとします。テーブルのすべての列の改行文字を確認する方法

ので、テーブルは次のようになります。私は、テーブルのすべての列に改行文字を見つけようとしています

enter image description here

。そして、列が見つかるとすぐに、私は出力として表示したいと思います。私はすでに以下のようなスクリプトを作成しています。

DECLARE 
BEGIN 
    FOR r IN (select column_name from user_tab_columns where TABLE_NAME = 'GROUP_DETAILS') LOOP 
    select r from GROUP_DETAILS where instr(r, chr(10)) > 0; 
    END LOOP; 
END; 

以下のようなエラーが表示されます。

エラーレポート - ORA-06550:行4、列48: PLS-00382:式が間違った型 ORA-06550である:行4、列12: PLS-00382:式が間違っているのですPLS-00428:このSELECT文にINTO句が必要です 06550.00000 - "行%s、列%s:\ n%s" ORA-06550:行4、列5 *原因:通常、 PL/SQLコンパイル・エラー *処置:

+0

このタグ付きMySQLはなぜですか? – tadman

+0

'r.column_name'を使用して列名を取得し、これを動的クエリに変更します。ここでは、両方の場所で列名をクエリ文字列に連結します。また、変数に文字列を取得するために 'INTO'節が欠けています。 – ruudvan

+0

@tadman開発時には別のものではないと思います – oisleyen

答えて

1

PL/SQLでこれを行う必要がありますか?

select name, code, description, 
     case when name  like '%' || chr(10) || '%' then 'name, '  end || 
     case when code  like '%' || chr(10) || '%' then 'code, '  end || 
     case when description like '%' || chr(10) || '%' then 'description' end 
     as where_found 
from group_details 
where name  like '%' || chr(10) || '%' 
    or code  like '%' || chr(10) || '%' 
    or description like '%' || chr(10) || '%'; 

これは、列の少なくとも一つが、改行が含まれているすべての行を返し、計算where_found列は、列が、それらを持っているあなたを正確に教えてくれます:あなたはこのように、プレーンなSQLで問題のある行を得ることができます値。 (それらははっきりと目に見えるので、計算された列は必要に応じてさらに処理することができます)

関連する問題