以下代码产生警告 - "参数在排序"中不是数字。
我的代码出了什么问题? 代码:
DECLARE
i number:=1;
k boolean := true;
output number;
stmt varchar(500);
BEGIN
<<repeat>>
while(k)
loop
DBMS_OUTPUT.PUT_LINE( 'c column -->'||i );
EXECUTE IMMEDIATE 'select 1 from X_TAB t where t.c'||i||'= ''NOTE_NFE'''
into output;
IF output = 1 then
DBMS_OUTPUT.PUT_LINE( 'c column'||i );
k:=false;
END IF;
i:=i+1;
IF i = 100 then
k:=false;
END IF;
END LOOP;
EXCEPTION
when no_data_found then
i:=i+1;
if i = 100 then
k:=false;
end if;
goto repeat;
END;
/
文件text.txt包含两个带数字的字符串。
答案 0 :(得分:2)
sort
显然是抱怨你的文件内容。
您应该尝试调试问题:
for my $line (@file_content) {
print "line: ".$line;
}
检查除数字之外是否还有其他内容(空行,带字符的行等)。
如果这没有帮助,请尝试在上下文中获取警告:
@sorted = sort {
print "a: $a";
print "b: $b";
$a <=> $b;
} @file_content;
这可能会产生较长的输出,但警告上方的a: ...
和b: ...
行会显示导致问题的行。
你真的想要数字排序吗?文本排序可能是解决方案:
@sorted = sort { $a cmp $b } @file_content;
请注意,您阅读文件的方式包括最后的换行符(通常为\n
)。这不会影响数字排序,因为如果字符串以数字开头,Perl只会切断任何没有数字的数字,但可能会混淆脚本的其余部分。试试chomp
摆脱它们。