[讨论]ORACLE 12C SQL语句中通过with 定义PL/SQL 函数

[复制链接]
查看11 | 回复5 | 2014-11-5 02:21:02 | 显示全部楼层 |阅读模式
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
PL/SQL Release 12.1.0.2.0 - Production
"CORE12.1.0.2.0Production"
TNS for 64-bit Windows: Version 12.1.0.2.0 - Production
NLSRTL Version 12.1.0.2.0 - Production
with function Is_Number
(x in varchar2) return varchar2 is
Plsql_Num_Error exception;
pragma exception_init(Plsql_Num_Error, -06502);
begin
if (To_Number(x) is NOT null) then
return 'Y';
else
return '';
end if;
exception
when Plsql_Num_Error then
return 'N';
end Is_Number;
select Is_Number('www.xifenfei.com') is_num from dual;
12c里执行报错了?咋回事啊?哪里写错了?

回复

使用道具 举报

千问 | 2014-11-5 02:21:02 | 显示全部楼层
牛逼的JB
这个主要是局部用吧。。。
回复

使用道具 举报

千问 | 2014-11-5 02:21:02 | 显示全部楼层
把异常去掉
回复

使用道具 举报

千问 | 2014-11-5 02:21:02 | 显示全部楼层
dexter@PDBSTK> 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 '';
10end if;
11 exception
12 when Plsql_Num_Error then
13 return 'N';
14end Is_Number;
15select Is_Number('www.xifenfei.com') is_num from dual;
16/
IS_NUM
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
N
复制代码ok啊
回复

使用道具 举报

千问 | 2014-11-5 02:21:02 | 显示全部楼层
也许是老版本的sqlplus不支持这种语法吧。
回复

使用道具 举报

千问 | 2014-11-5 02:21:02 | 显示全部楼层
renfengjun 发表于 2014-10-21 20:02
也许是老版本的sqlplus不支持这种语法吧。

我放plsql developer command window里执行了

在sqlplus里可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行