如何检查表的所有列的换行符

时间:2016-04-22 14:57:29

标签: oracle plsql

假设有一个名为" GROUP_DETAILS"的表。有列(NAME,CODE,DESCRIPTION)。

所以,表格如下:

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:表达式类型错误   ORA-06550:第4行,第5栏:   PLS-00428:此SELECT语句中需要一个INTO子句   06550. 00000 - "行%s,列%s:\ n%s"   *原因:通常是PL / SQL编译错误。   *操作:

1 个答案:

答案 0 :(得分:1)

你需要在PL / SQL中这样做吗?您可以使用纯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列将准确告诉您哪些列具有这些值。 (它们也清晰可见;如果需要,计算的列可用于进一步处理。)