假设有一个名为" GROUP_DETAILS"的表。有列(NAME,CODE,DESCRIPTION)。
所以,表格如下:
我正在尝试在表格的所有列中找到新的换行符。然后,一旦找到列,我也想显示为输出。我已经创建了如下脚本;
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 :(得分: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列将准确告诉您哪些列具有这些值。 (它们也清晰可见;如果需要,计算的列可用于进一步处理。)