我注意到导入截断的数据只会引发警告。T 认为通过处理程序捕获该警告并发出错误信号会很简单,但我似乎无法做到这一点。有什么建议么?
CREATE OR REPLACE PROCEDURE FILE_IMPORT_HANDLER(filename VARCHAR(255), tablename
VARCHAR(255))
LANGUAGE SQL
BEGIN
DECLARE EXIT HANDLER FOR SQLSTATE '22001'
SIGNAL SQLSTATE '75002'
SET MESSAGE_TEXT = '...';
CALL ADMIN_CMD('import from ' || filename || ' of del insert into ' || tablename);
END @
如果遇到22001我愿意努力失败。从某种意义上说,提高导入过程中数据截断的严重性
设置
WARNINGCOUNT 1
选项:(强调我的)。在这种情况下,您甚至不需要您的处理程序。
顺便说一句,这是 XY Problem™ 的一个很好的例子。您实际上不需要“提高警告的严重性”,您只需要
IMPORT
在第一次警告时终止。这似乎可以解决问题:
不确定处理程序中是否可以有更细的粒度。如果我运行:
对于包含我试图捕获的错误的文件,将返回一个空的 sqlstate。