MYSQL网站制作之在Adaptive Server Anywhere和Oracle之...
应用程序需要使用数据库,数据库本身需要设计、开发和部署。还有MySQL学习教程,客户怎样实施混合系统,或者需要帮助管理多个云服务?oracle|server|函数在AdaptiveServerAnywhere和Oracle之间机关通用函数辽河油田锦采地质年夜队邓先永01-7-2上午10:29:41
在利用PowerBuilder体例程序时,利用的最多的数据库接口是它本身集成的AdaptiveServerAnywhere和年夜型数据库办理体系Oracle;偶然,为了使程序的运转、移植加倍便利,好比从服务器的数据办理端当即转到单机的数据办理端时,常常触及到用户在程序的SQL语句中所利用的分歧数据库平台上,函数的兼容性成绩。好比在最初的数据汇总时,为了包管盘算了局的准确性,就要利用避免空值产生的函数,这个函数在Oracle中是nvl(x,y);用法为:selectname,nvl(age,”岁数未知”)age,nvl(zipcode,”无邮政编码”)zipcodefromunknow_personal;则大概呈现的了局为:nameagezipcode张三45 无邮政编码李四 岁数未知 234567王五 岁数未知无邮政编码而在AdaptiveServerAnywhere的单机数据库平台上,就要用isnull等函数了,语法为:selectname,isnull(age,”岁数未知”)age,isnull(zipcode,”无邮政编码”)zipcodefromunknow_personal;最初的了局是一样的。如今成绩是当我们所用的数据库要从Oracle移植到单机版的AdaptiveServerAnywhere上时,因为某些函数的欠亨用性,程序就要修正响应的函数挪用,从头编译,假如在程序中大批或多处利用这类函数时,就很有大概招致工资的毛病,从而使程序的保护事情量加年夜,我曾在网上发过有相干匡助的帖子,但不太切中关键。经由细心研讨一段工夫后,终究在AdaptiveServerAnywhere单机平台上完成了Oracle上的函数nvl(),使我的程序使用加倍便利,现写上去与人人共享。别的,自己之前用PB6的时分,在PB6的DatabaseAdministraterPainter中曾编写过对照庞大的StoredProcedure,可是因为PB6中在处置和Database间接接口的Script时,关于”;”和”’”的利用上较多的不便利的地方,因此完成时消费了很多的力气,固然在PB7中此偏差仍旧存在,但在PB7的光盘中集成的AdaptiveServerAnywhere6.0的办理工具却比在PB6中的优异良多,利用ManagerAdaptiveServerAnywhere这个工具就可以很轻松地对数据库举行操纵。起首,假如人人已准确安装了PB7.0.1后,就能够经由过程以下步骤来启动ManagerAdaptiveServerAnywhere:入手下手→Sybase→ManagerAdaptiveServerAnywhere。启动后呈现办理界面,再按以下步骤:选菜单Tools→Connect→AdaptiveServerAnywhere,再选择你在体系ODBC中设置好的数据源(PB7.0.1对此处置对照好,把各类数据源都集成到体系的ODBC设置中来举行,对照正轨,大概初学者还不太顺应吧!),假如有需要,能够在UserID:和Password:处输出毗连数据库的用户名和口令,以后按断定,就举行数据库的毗连。好比我们此次毗连ASA6.0Sample,固然用户在实践使用中就要毗连本人的数据库了,假如毗连乐成,会在SybaseCentral下的AdaptiveServerAnywhere下呈现asademo的图标了;双击鼠标,翻开asademo;再双击asademo(dba),翻开其下的Tables,Views,Procedures&Functions
等子项,单击rocedures&Functions
项,在右侧窗口中就会呈现以后毗连的数据库中所撑持的历程和函数,在右侧窗口中双击AddFunction(Template),此时会呈现NewFunction的窗口,窗口中有一个函数的大抵框架,但为了完成在Oracle中的nvl()函数,请将NewFunction窗口中的语句改成以下的情势:createfunctionnvl(inxtext,inytext)returnstextbegindeclareztext;ifxisnullthensetz=yelsesetz=xendif;return(z)end为了以上几行Script,自己也试过量次才乐成,起首是下面的(inxtext,inytext),暗示函数有两个输出参数:x,y,而数据范例是text。这个text数据范例真是很风趣,我想就算是Sybase公司很好的创意吧!刚入手下手时,我用的是real范例,但它处置数值型字段时能够,但在处置字符型的字段时就不灵了,厥后又细心剖析了一下AdaptiveServerAnywhere所供应的数据范例后,改用text统统才OK!前面的Script,我曾想间接挪用AdaptiveServerAnywhere的isnull()函数,却没有乐成,接待宽大网友主动介入会商;至于别的的Script,人人细心看看AdaptiveServerAnywhere的匡助后,应当是能够写出来的。以后,选择NewFunction窗口的File→ExcuteScript实行此语句,就好了,这时候回到ManagerAdaptiveServerAnywhere的办理界面,在Procedures&Functions项中,就会有nvl()函数了,用它便可介入实战。上去另有一步,原本这一步无关紧要,由于在数据库只需有了nvl()的界说后,就能够在PB中间接写带有nvl()的Script,而不会呈现语法毛病了,可是,为了用户能在PB中间接挪用,就算是构成一个完全的使用,倡议人人仍是保持完成上面的历程,归正又不太费力,别的还能够长常识呢。人人在构建DataWindow的时分,信任已利用过响应数据库中的函数,出格是在用盘算列时,就很有大概用到函数了,如今,我们要把在AdaptiveServerAnywhere中完成的相似于Oracle的nvl()函数,让它呈现在DataWindowPainter的能够间接拔取的函数名中(原本用Oracle连库是有的,但用AdaptiveServerAnywhere连库时就会有isnull()函数可选,而没有nvl()可选),经由我们的剖析,能够用以下几步来完成:1.找到Sybase安装目次的haredPowerBuilder下的pbodb70.ini文件,翻开它,找到,能够看到PBFunctions=ASA_FUNCTIONS,即AdaptiveServerAnywhere数据库所用的函数是从ASA_FUNCTIONS处来取得,只需我们把关于nvl()的声明放到ASA_FUNCTIONS的响应部分,就能够在AdaptiveServerAnywhere数据库中,在PB的开辟界面中,间接利用nvl()函数了(因而可知在PB中ini文件的主要性)。2.在pbodb70.ini文件中找到Functions段的,在Functions=abs(x)…的符合的中央到场关于nvl()的声明:”nvl(x,y),”(倡议加到ifnull(x,y,z),处)便可。存盘加入,以后启动PB,人人就能够看到,即便利用AdaptiveServerAnywhere数据库,也一样可使用Oracle中的nvl()函数了。如许有一个对照严重的意义是:完成了如许的函数后,用户的程序就能够在服务器版和单机版间通用了,省往了为服务器版和单机版分离开辟分歧代码的贫苦;一旦在单机数据库上创建好同服务器不异的库布局,装载类似的数据后,就能够一律利用。以上是自己一样平常开辟的履历所得,毛病和不敷疏漏的地方再所不免,本文旨在举一反三,关于数据库开辟工具PowerBuilder的利用,且就本文上述的各个方面,确有很多能够年夜开论坛,会商一番的需要,接待宽大PB,VC开辟者与我接洽hard_deng@netease.com。2000年6月9日别的我还在又造了别的的几个函数:即在sqlanywhere下天生的ceil、add_months和to_char函数:createfunctionceil(inxreal)returnsintegerbegindeclarezinteger;setz=ceiling(x);return(z)endcreatefunctionadd_months(inxdate,inyinteger)returnsdatebegindeclarezdate;setz=months(x,y);return(z)endcreatefunctionto_char(inxdate,inyTEXT)returnsTEXTbegindeclarezTEXT;declareiiinteger;ify=yyyymmthensetii=112endif;setz=convert(char(8),x,ii);setz="left"(z,6);return(z)end客户还是可以使用DBaaS系统所能提供的所有能力。数据库云服务消除了组织对专职人员、本地数据库存储设备的需要。他们不必安装、配置和维护任何软硬件。 需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。 XML字段类型更好的解决了XML数据的操作。XQuery确实不错,但是个人对其没好感。(CSDN的开发者应该是相当的熟了!) 你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。 从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。 每天坚持做不一样的是,认真做笔录,定时复习。一个月你就可以有一定的收获。当然如果你想在sql方面有一定的造诣,你少不了需要看很多很多的书籍了。 两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书 这就引发了对varchar和char效率讨论的老问题。到底如何分配varchar的数据,是否会出现大规模的碎片? 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。 而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。
页:
[1]