Welcome 微信登录

首页 / 数据库 / MySQL / 通过Oracle函数实现.NET String.Format函数的简单版

由于开发需要,想实现一些提示信息的通用,比如,提示信息内容:“XXX的值YYY不正确,请检查并重新输入!”,那么,通用的信息内容就应该为:“{0}的值{1}不正确,请检查并重新输入!”。但这个“{0}”和"{1}"怎么替换掉呢?在.net中,字符串有String.Format函数,这样我们就可以很容易地去根据不同的内容,替换成不一样的内容,但Oracle里面还没有样的函数(据个人所知,不知道有没有孤漏寡闻!),但又想用,所以就只能自己写了。想了想,有问题啊,且听我道来:信息内容中有多个参数,并且都是用花括号中带数字来表示,如{0},{1},{2},那么,这些参数最好能用数组来表示,但Oracle PL/SQL中有数组吗?都怪自己平时不努力,书到用时方恨少啊。在网上百谷了一下,Oralce里面没有现成的数据类型,只有通过自定义数组类型(其实是Table表结构类型).如下代码所示: CREATE OR REPLACE TYPE stringarrary IS TABLE OF VARCHAR2 (4000);可是问题又来了,用的时候,怎么传值给函数啊?杯具了,纠结了好一会,算了,还是笨一会吧,字符串分割好了。那么这个函数需要什么东东呢?1.信息内容2.参数列表(多个参数用分割符分开)3.分割符(当然是跟2中一致的,不然,可就牛头不对马嘴了)开始写吧,转头一想,是不是分成两个函数会更好呢?一个用于分割返回参数数组列表,另一个专就是调用分割函数得到参数列表后,做替换的动作,最后返回。en,想想不错,就写成两个吧,功能很单纯,很天真。俗话说,他山之石,可以攻玉。百谷了一下,分割函数有现成的,拿来吧,请往下看:1 CREATE OR REPLACE FUNCTION stringsplit (SOURCE VARCHAR2, spliter VARCHAR2)
 2    RETURN stringarrary
 3 IS
 4    j             INT             := 0;
 5    i             INT             := 1;
 6    len           INT             := 0;
 7    len1          INT             := 0;
 8    str           VARCHAR2 (4000);
 9    returnvalue   stringarrary    := stringarrary ();
10 BEGIN
11    IF (spliter IS NULL) OR (SOURCE IS NULL)
12    THEN
13       returnvalue.EXTEND;
14       returnvalue (1) := SOURCE;
15    ELSE
16       len := LENGTH (SOURCE);
17       len1 := LENGTH (spliter);
18 
19       WHILE j < len
20       LOOP
21          j := INSTR (SOURCE, spliter, i);
22 
23          IF j = 0
24          THEN
25             j := len;
26             str := SUBSTR (SOURCE, i);
27             returnvalue.EXTEND;
28             returnvalue (returnvalue.COUNT) := str;
29 
30             IF i >= len
31             THEN
32                EXIT;
33             END IF;
34          ELSE
35             str := SUBSTR (SOURCE, i, j - i);
36             i := j + len1;
37             returnvalue.EXTEND;
38             returnvalue (returnvalue.COUNT) := str;
39          END IF;
40       END LOOP;
41    END IF;
42 
43    RETURN returnvalue;
44 END stringsplit;
  • 1
  • 2
  • 下一页
使用 Toad 操作 Oracle 初步MySQL双向同步相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数