FUNCTION是返回值的PL / SQL块或方法,因此它可以在赋值的右侧使用。这里是一个例子:
n_value := to_number('123.45');
由于FUNCTION返回一个值,因此也可以在SQL语句中使用它,如下例所示:
select to_number('1') from dual;
创建函数
让我们创建一个无错的to_number()函数,而不是像在SELECT语句中那样尝试将varchar2转换为一个数字,而不是处理错误。
CREATE OR REPLACE FUNCTION to_number_or_null ( aiv_number IN varchar2 )
return number is
begin -- w w w . ja v a 2s. c om
return to_number(aiv_number);
exception
when OTHERS then return NULL;
end to_number_or_null;
/
select to_number_or_null ( '123') from dual;
注意
用于创建函数的DDL语法如下:
CREATE [OR REPLACE] FUNCTION <function_name> [(
<parameter_name_1> [IN] [OUT] <parameter_data_type_1>,
<parameter_name_2> [IN] [OUT] <parameter_data_type_2>,...
<parameter_name_N> [IN] [OUT] <parameter_data_type_N> )]
RETURN <return_data_type> IS-- from www. j a v a 2s . com
--the declaration section
BEGIN
-- the executable section
return <return_data_type>;
EXCEPTION
-- the exception-handling section
END;
/
其中<function_name>是FUNCTION的名称; <parameter_name>是要传递的参数的名称IN,OUT或INand OUT; <parameter_data_type>是相应参数的PL / SQL数据类型; <return_data_type>是FUNCTION完成执行时将返回的值的PL / SQL数据类型。
注意2
[]
关键字OR REPLACE周围的 括号表示它们是可选的。
参数的括号表示它们也是可选的。
除了添加数据定义语言(DDL)CREATE FUNCTION关键字,可选参数和RETURN子句之外,FUNCTION的块结构与匿名过程相同。
下面的代码试图在SELECT语句中使用这个无错的FUNCTION:
select to_number_or_null('A') from DUAL;
它返回一个NULL值,因为字母A不是一个数字。
select to_number_or_null('234.56') from DUAL;
实例2
以下代码创建一个to_date()函数。
create or replace FUNCTION to_mmsddsyyyy_or_null ( aiv_date in varchar2 )
return date is
begin -- w w w . j a va 2 s . co m
return to_date(aiv_date, 'MM/DD/YYYY');
exception
when OTHERS then
return NULL;
end to_mmsddsyyyy_or_null;
/
select to_mmsddsyyyy_or_null('A') from DUAL;
以下PL / SQL块创建一个测试单元以测试该函数。
begin
sys.dbms_output.put_line(to_mmsddsyyyy_or_null('01/01/2000'));
sys.dbms_output.put_line(to_mmsddsyyyy_or_null('02/29/2000'));
sys.dbms_output.put_line(to_mmsddsyyyy_or_null('02/29/2001'));
sys.dbms_output.put_line(to_mmsddsyyyy_or_null('9/9/2016'));
sys.dbms_output.put_line(to_mmsddsyyyy_or_null('9/9/9999'));
sys.dbms_output.put_line(to_mmsddsyyyy_or_null('1/1/9999 BC'));
end;
/
CSDN:程序猿 寄语:
1、作为一个真正的程序员,首先应该尊重编程,热爱你所写下的程序,他是你的伙伴,而不是工具。
2、程序员可以让步,却不可以退缩,可以羞涩,却不可以软弱,总之,程序员必须是勇敢的。
3、编程是一种单调的生活,因此程序员比普通人需要更多的关怀,更多的友情。
4、程序不是年轻的专利,但是,他属于年轻。
5、没有情调,不懂浪漫,也许这是程序员的一面,但拥有朴实无华的爱是他们的另一面。
6、一个好汉三个帮,程序员同样如此。