Oracle函数始终返回null
发布时间:2021-03-14 23:16:26 所属栏目:百科 来源:网络整理
导读:我不能让这个功能按照我的意愿行事.任何人都可以指出为什么它总是返回null而不是CURRENT_TIMESTAMP? CREATE OR REPLACE FUNCTION nowts RETURN TIMESTAMP ISvTimestamp TIMESTAMP;BEGIN SELECT type_date INTO vTimestamp FROM param_table WHERE param_t
我不能让这个功能按照我的意愿行事.任何人都可以指出为什么它总是返回null而不是CURRENT_TIMESTAMP? CREATE OR REPLACE FUNCTION nowts RETURN TIMESTAMP IS vTimestamp TIMESTAMP; BEGIN SELECT type_date INTO vTimestamp FROM param_table WHERE param_table = 3 AND exists ( SELECT * FROM param_table WHERE param_table = 2 ); IF vTimestamp IS NULL THEN vTimestamp := CURRENT_TIMESTAMP; END IF; return vTimestamp; END nowts; 现在,名为param_table的表中没有任何内容. 解决方法如果从SQL调用函数并且该函数引发NO_DATA_FOUND,则会得到NULL.NO_DATA_FOUND中的SQLCODE为100,而PL / SQL代码为-1403. Ref 正数不是错误,SQL不会将NO_DATA_FOUND的概念视为异常. SQL将其视为“无值”,即null. create or replace function ret_dt return date is begin raise no_data_found; end; / Elapsed: 00:00:00.26 > select rownum,ret_dt from user_tables where rownum < 5; ROWNUM RET_DT --------------- ----------------- 1.00 2.00 3.00 4.00 您可能希望捕获它并返回特定值,或捕获它并引发用户定义的异常(取决于您想要发生的事情). (编辑:淮北站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |