首页 > 数据库 >Oracle PL / SQL 函数

Oracle PL / SQL 函数

时间:2024-07-01 08:59:13浏览次数:20  
标签:FUNCTION mmsddsyyyy return -- number SQL Oracle null PL

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、一个好汉三个帮,程序员同样如此。

标签:FUNCTION,mmsddsyyyy,return,--,number,SQL,Oracle,null,PL
From: https://blog.csdn.net/licun110/article/details/140091255

相关文章

  • Gaming Dongle Feature Application Note
    References:GamingDongleFeatureApplicationNotedongle发送给headset的spp指令格式(PS:这部分指令的的接收可以在headset的app_dongle_spp_cback函数看到,但在dongle部分的发送指令源码似乎在sdk中看不到Σ(っ°Д°;)っ)功能实现函数headset部分//headset和dongl......
  • Oracle PL / SQL 存储过程
    PL/SQL存储过程不返回值。他们执行他们的指示并返回。您不能在赋值语句(如函数)的右侧使用存储过程。创建存储过程以下代码是一个非常简单的存储过程示例。它基于SYS.DBMS_LOCK包的程序sleep(数量)。此存储过程将停止执行指定的秒数。CREATEORREPLACEPROCEDUREwait(ai......
  • Mysql表的增删改查详解
    3.表的增删改查创建一个学生表DROPTABLEIFEXISTSstudent;CREATETABLEstudent(idINT,snINTcomment'学号',nameVARCHAR(20)comment'姓名',qq_mailVARCHAR(20)comment'QQ邮箱');单行数据+全列插入插入两条记录,value_list数量必须......
  • Paper Reading: Genetic programming for multiple-feature construction on high-dim
    目录研究动机文章贡献预备知识本文方法MCIFC:一种多类无关的特征构建方法CDFC:一种多类相关特征构建方法实验结果数据集和实验设置多特征构造与单特征构造对比多树GP对比单树GPfilter对比混合方法类依赖对比类独立非GP对比基于GP的特征构建优点和创新点PaperReading是从......
  • Electron | throw new Error('Electron failed to install correctly, please delete
    https://github.com/electron-vite问题原因在install的时候node_modules/electron/中的文件丢失造成程序无法执行解决方案要重新安装加载electron。这只是其中一个解决方案。参考https://github.com/pangxieju/electron-fix//1.npminstal//2.npminstall-gelectron......
  • C++Primer Plus 第十四章代码重用:模板类和友元14.4.9 ----002
    C++PrimerPlus第十四章代码重用:模板类和友元14.4.9提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:模板类和友元14.4.9提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录C++PrimerPlus第十四章代码重用:模板类和友元14.4......
  • 类JPA定制mysql中日志打印
    在类JPA自定义框架中,使用mysql数据库,开发环境可以考虑调整driver:jdbc.driver=net.sf.log4jjdbc.DriverSpy配置:spring.datasource.driver-class-name=net.sf.log4jdbc.DriverSpyspring.datasource.url=jdbc:log4jdbc:mysql://localhost:3306/springboot?useUnicode=true&......
  • MySQL 索引之外的相关查询优化总结
    在这之前先说明几个概念:1、驱动表和被驱动表:驱动表是主表,被驱动表是从表、非驱动表。驱动表和被驱动表并非根据from后面表名的先后顺序而确定,而是根据explain语句查询得到的顺序确定;展示在前面的是驱动表,后面的是非驱动表。2、关联查询的类型非为:内连接(innerjoin)、......
  • PostgreSQL的系统视图pg_statio_all_indexes
    PostgreSQL的系统视图pg_statio_all_indexes在PostgreSQL数据库中,pg_statio_all_indexes视图提供了有关所有索引的I/O活动的统计信息。这些统计信息对于了解索引的使用情况和性能调优非常有帮助。pg_statio_all_indexes视图的结构以下是pg_statio_all_indexes视......
  • “了解MySQL中的enum枚举数据类型“
    目录#开篇1.创建包含枚举类型的表2.插入枚举类型的数据3.查询包含枚举类型的表4.更新枚举类型的数据5.使用枚举类型的好处注意事项示例总结附加#开篇        在数据库中,枚举(ENUM)是一种数据类型,用于存储一组预定义的值。这在某些情况下非常有用,例如......