当前位置:  数据库>oracle

通过Oracle函数实现.NET String.Format函数的简单版

    来源: 互联网  发布时间:2017-04-04

    本文导语: 由于开发需要,想实现一些提示信息的通用,比如,提示信息内容:“XXX的值YYY不正确,请检查并重新输入!”,那么,通用的信息内容就应该为:“{0}的值{1}不正确,请检查并重新输入!”。但这个“{0}”和"{1}"怎么替换掉呢...

由于开发需要,想实现一些提示信息的通用,比如,提示信息内容:“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
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;


    
 
 

您可能感兴趣的文章:

  • php通过pack和unpack函数实现对二进制数据封装及解析
  • 如何通过函数名访问函数
  • 在SQL中有函数,比如COUNT(*),怎样通过JDBC调用获得函数值????
  • GCC是怎么通过.h文件找到C函数库的
  • 如何通过gtk的函数在程序里获取显示器的分辨率????????
  • 通过docker commit命令保存对docker容器的修改 iis7站长之家
  • 通过man显示umask函数的用法
  • 求救:关于在BSD下如何通过文件路径使用核内函数获得文件句柄?
  • Linux g++编译调用模板函数的类不通过,但是VC2005通过
  • 请问已知进程的PID,通过什么函数可以得到进程的名字?
  • apache通过php的oci函数读取Oracle(字符集ZHS16GBK)时,显示乱码,如何解决?
  • poll函数永远阻塞之后能够手动使之返回吗,就像win系统中的WaitForSingleObjec(hEvent.) 我可以通过 SetEvent(hEvent)来让wait返回.
  • 关于线程创建函数的一个简单问题(编译未通过)
  • 请问在SCO下的c编程模式下,通过哪个函数获得系统的日期和时间?
  • 关于在linux下"通过ip地址获取它的主机名"谁有比较好的函数或例子,谢谢,加分!
  • php通过字符串调用函数示例
  • 直接在终端启动程序和通过脚本或者exec函数执行有何不同?
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • G++ 4.4.2和linux编译调用模板的函数,编译不通过,但是VC2005却可以。
  • 设置定时器,运行一个函数,为什么不能通过编译
  • 如何通过函数指针调用函数(实现代码)
  • 通过javascript实现DIV居中,兼容各浏览器版本
  • 现在java开发中流行通过什么方式实现对数据库操作?就好像Visual Stadio通过ADO访问数据库。
  • 通过javascript库JQuery实现页面跳转功能代码
  • php通过数组实现多条件查询实现方法(字符串分割)
  • c#通过委托delegate与Dictionary实现action选择器代码举例
  • 如何设置JTextArea里字体??通过什么方法可以实现?
  • linux下通过crond实现自动执行程序
  • [Fedora] 使用Xmanger来实现在windows下通过远程桌面来访问linux主机的方法
  • Session id实现通过Cookie来传输方法及代码参考
  • 请教,怎样通过jsp和servlet实现rmi技术
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • php通过socket_bind()设置IP地址代码示例
  • applet可以不通过数字签名,通过设置IE直接在本地访问本地文件吗
  • 通过docker commit命令保存对docker容器的修改
  • 我使用.net编译通过,但是使用g++编译不能通过。总是提示我undefined reference to ~myclass()
  • 通过docker run命令运行新的docker镜像
  • 紧急求救!能通过jdbc怎样连接sqlsever 然后通过 for xml 关键字得到xml流吗?
  • 通过docker ps命令检查运行中的docker镜像
  • 我想我的网站屏蔽掉通过某些网站过来的访问,我想通过htaccess 文件来做,请大家帮帮我。
  • 通过docker search命令搜索可用docker镜像
  • 如何通过INTERNET访问通过共项一条线路上网的局域网中的机器???
  • .NET下 c#通过COM组件操作并导出Excel实例代码
  • 为什么g++编译通过了,而gcc却编译通过不了???
  • Python通过正则表达式获取,去除(过滤)或者替换HTML标签的几种方法
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户
  • 红帽redhat下通过脚本和yum安装docker容器引擎的详细步骤
  • Jbuilder第一次编译说缺包,引入通过!然后把原来引入的注释,又通过!上帝,救我!
  • nginx服务器下通过fastcgi支持php5详细安装配置步骤
  • 红旗Linux主机可以通过127.0.0.1访问,但如何是连网的Win2000机器通过Linux的IP去访问Linux
  • 如何通过 Docker 在 Linux 上托管 .NET Core
  • 请指点: 在windows下能否通过程序来获取linux下的用户列表,甚至通过自己写的windows程序界面增加修改linux的用户 100分相赠
  • Linux下通过rpm安装软件详细介绍以及如何将软件安装到指定目录
  • 工作站Redhat Linux7.2如何通过NT4.0 proxy代理服务器上网,我不能通过其验证!请高手指点思路和方法!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3