联系:手机/微信(+86 17813235971) QQ(107644445)
标题:ORACLE 12C SQL语句中通过with 定义PL/SQL 函数
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
在ORACLE 12C支持在sql语句中编写函数,用来实现sql语句操作需要使用函数的部分功能,该功能对于你不想在数据库中新建函数 or 你的库是read only模式下要使用新函数实现某种功能,可以通过这种方法实现,增加了ORACLE数据库灵活点
SQL> select * from v$version; BANNER CON_ID -------------------------------------------------------------------------------- ---------- Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production 0 PL/SQL Release 12.1.0.1.0 - Production 0 CORE 12.1.0.1.0 Production 0 TNS for Linux: Version 12.1.0.1.0 - Production 0 NLSRTL Version 12.1.0.1.0 - Production 0
测试过程创建一个简单函数,用来判断输入数据值是否是数字,如果是数字输出Y,如果不是输出N.
如果是12C以前的数据库,需要事先创建一个函数,然后通过select语句条用;但是在12C中直接通过一条select语句解决
SQL> with function Is_Number 2 (x in varchar2) return varchar2 is 3 Plsql_Num_Error exception; 4 pragma exception_init(Plsql_Num_Error, -06502); 5 begin 6 if (To_Number(x) is NOT null) then 7 return 'Y'; 8 else 9 return ''; 10 end if; 11 exception 12 when Plsql_Num_Error then 13 return 'N'; 14 end Is_Number; 15 select is_number('www.xifenfei.com') is_num from dual; 16 / IS_NUM -------------------------------------------------------------------------------- N