Oracle中使用selectaintob时遇到空值问题-mysql教程
今天一朋友问及我这个问题mssql 空值,当记录不存在,,会提
当在PL_SQL中执行SELECT hellip; INTO hellip;语句时,如果返回结果集为空,则回触发NO_DATA_FOUND错误。但是当 SELECT 中有字 今天一朋友问及我这个问题mssql 空值,当记录不存在,,会提示 no data 的错误,下面是网上这类问题的解决方法。 当在PL_SQL中执行SELECT … INTO …语句时,如果返回结果集为空,则回触发NO_DATA_FOUND错误。但是当 SELECT 中有字段用到函数时,即使结果集为空,也不会触发NO_DATA_FOUND错误。 CREATE OR REPLACE PROCEDURE RD.EXCEPTION_TEST IS test date; BEGIN SELECT END_TIME INTO test FROM RD.R_LINE_STOP_TIME WHERE rownum = 1; END EXCEPTION_TEST; 当执行该存储过程时,会提示错误 ORA-01403: no data found ORA-06512: at "RD.EXCEPTION_TEST", line 17 ORA-06512: at line 1 CREATE OR REPLACE PROCEDURE RD.EXCEPTION_TEST IS test date; BEGIN SELECT max(END_TIME) INTO test FROM RD.R_LINE_STOP_TIME WHERE rownum = 1; END EXCEPTION_TEST; 当执行带有函数的存储过程时,则并不会报no data found异常. CREATE OR REPLACE PROCEDURE RD.EXCEPTION_TEST IS test varchar2(10); BEGIN SELECT to_char(END_TIME, 'yyyy-mm-dd') INTO test FROM RD.R_LINE_STOP_TIME WHERE rownum = 1; END EXCEPTION_TEST; 但是在执行带to_char、substr等这样的函数会报no data found异常。 ========== 我的理解是,当表中存在记录但字段值为空值,与表中不存在记录为空是两个不同的概念。一些集合函数如max,sum在处理的时候会自动引入null值。 不知sql server中是否也存在类似的问题? > (编辑:成都站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |