如果你在 pl/sql 上下文中运行,你真的可以像这样去做
declare
l_date date;
begin
begin
l_date := to_date(txt_informationdate);
exception
when others then l_date := null;
end;
if l_date is null then
update dummy set informationdate = l_date;
end if;
exception
when others then
dbms_output.put_line('something else went wrong');
end;
我没有对此进行测试,但应该可以。也许你必须纠正一些语法错误。
如果您想从其他语言程序中进行更新,那么您可能需要为上述内容创建一个小过程,而不是对远程过程调用进行更新。或者您也可以为自己定义一个 is_date 函数,可能像这样
create or replace function is_date(i_date varchar2)
return date
as
begin
return to_date(i_date);
exception
when other then return null;
end;
您的更新可能看起来像这样
update dummy set informationdate = is_date(txt_informationdate);
同样,这一切都未经测试,可能有一些语法错误,但我相信你明白了。