我不希望处理任何数据。每当引发此异常时,我都希望程序继续运行,而不会因错误而停止。下面是代码段
BEGIN
OPEN C_TABLE_PARTITON_LIST;
LOOP
FETCH C_TABLE_PARTITON_LIST INTO TABLE_PARTITION_LIST;
EXIT WHEN C_TABLE_PARTITON_LIST%NOTFOUND;
SELECT COLUMN_NAME INTO PARTITION_COLUMN_NAME from ALL_PART_KEY_COLUMNS
sqlstring :='SELECT ( '|| PARTITION_COLUMN_NAME ||'from test';
EXECUTE IMMEDIATE sqlstring INTO F_RESULT;
exception when no_data_found then
dbms_output.put_line('no data found.');
DBMS_OUTPUT.put_line( F_RESULT);
END LOOP;
CLOSE C_TABLE_PARTITON_LIST;
END;
当我添加Exception时,我的代码因以下错误而中断
PLS-00103:预期以下情况之一时遇到符号“ EXCEPTION”:
(如果循环模式为null,则开始情况为goto声明结束出口 编译指示提高返回选择更新同时 << 继续关闭当前删除取回锁定插入打开回滚 savepoint设置sql执行commit forall合并管道清除 json_exists json_value json_query json_object json_array
ORA-06550:第29行,第3列:
PLS-00103:预期以下情况之一时遇到符号“ CLOSE”:
结束非编译最终覆盖的实例化静态 成员构造函数图
答案 0 :(得分:2)
您必须将有问题的脚本部分包含在其自己的BEGIN-EXCEPTION-END块中,例如
BEGIN
OPEN C_TABLE_PARTITON_LIST;
LOOP
FETCH C_TABLE_PARTITON_LIST INTO TABLE_PARTITION_LIST;
EXIT WHEN C_TABLE_PARTITON_LIST%NOTFOUND;
begin --> you need this ...
SELECT COLUMN_NAME INTO PARTITION_COLUMN_NAME from ALL_PART_KEY_COLUMNS
sqlstring :='SELECT ( '|| PARTITION_COLUMN_NAME ||'from test';
EXECUTE IMMEDIATE sqlstring INTO F_RESULT;
exception when no_data_found then
dbms_output.put_line('no data found.');
DBMS_OUTPUT.put_line( F_RESULT);
end; --> ... and this
END LOOP;
CLOSE C_TABLE_PARTITON_LIST;
END;
请注意,我只是演示了执行此操作的方法。您发布的代码
SELECT
语句缺少分号,并且可能还有WHERE
子句SQLSTRING
变量将不起作用; 'from test'
的前导空格,否则该语句将无效DBMS_OUTPUT
SQLSTRING
以确保其正确;然后执行它。