2016-04-22 59 views
0

假设有名为“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:表达是错键入 ORA-06550:第4行,第5列: PLS-00428:此SELECT语句中预期有一个INTO子句 06550. 00000 - “行%s,列%s:\ n%s” *原因:通常PL/SQL编译错误。 *操作:

+0

为什么标记为MySQL? – tadman

+0

使用'r.column_name'获取列名并将其更改为动态查询,在这两处将列名连接到查询字符串。它也缺少'INTO'子句来获取变量中的字符串。 – ruudvan

+0

@tadman我认为他们在开发时并不是不同的东西 – oisleyen

回答

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列将确切地告诉你哪些列有那些值。 (它们也会清晰可见;如果需要,计算列可用于进一步处理。)

相关问题