




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PB内置OEACLE数据库接口的使用方法(深圳:独孤求败2003-05-16)PowerBuilder(PB)和Oracle分别是前端开发工具和RDBMS的主流产品。PB提供了两种与Oracle连接的接口:PowerSoft内置的数据库接口(NativeDatabaseInterface)和ODBC接口。本文介绍使用PB6.0内置Oracle接口的方法,包括数据描述文件的设置、存储过程的调用和存储过程作为数据窗口数据源的操作方法等内容,使用的RDBMS的Oracle7.3。PowerBuilder与Oracle的连接假定已安装Oracle客户端应用程序。可用Sqlplus或Tnsping等是否能连接到Oracle数据库,确定在SQL.NET配置文件中使用的数据库别名(DatabaseAlias,又称服务器名,ServerName)。如有疑问,可在Oracle客户端程序目录下tnsname.ora文件中找到。另外保证搜索路径已包括SQL.NET应用程序的安装目录(如C:ORAWIN95BIN)。进入PB的DatabaseProfiles画笔,可看到所有已安装的数据库接口(PB6.0缺省安装的是Oracle7.3版的接口,如使用低版本的Oracle,需在安装时指定),选择“Oracle7.3”,点击“New”按钮,进入DatabaseProfileSetup对话框。在“Connection”页输入下列信息:ProfileName:为该DatabaseProfile起一个有意义的名称;Server:TNS:ServerName,其中ServerName为上述数据库别名(服务器名),如TNS:ORA73;LoginID:Oracle数据库中实际的用户名,由于PB初次连接到数据库时要自动建立五个系统表(PowerBuilderCatalogTable:PBCATTBL,PBCATCOL,PBCATEDT,PBCATFMT,PBCATVLD,存储表的扩展属性),因此第一个连接到Oracle的用户必须具有建表、给PUBLIC角色授权等权限。例如可用SYSTEM用户进行第一次连接,此后的连接对用户则无特殊要求;Password:该用户的口令。设置上述内容后,即可连上Oracle。为优化数据库连接,还可设置下列选项:PromptforDatabaseInformation:连接时是否提示用户输入用户名和口令;GenerateTrace:启动DB跟踪工具,跟踪连接;ThreadSafe:开发需要多线程环境支持的分布式应用时,选择该项。缺省为未选,适用于非分布应用;PBDBMS:与存储过程调用方式有关的参数。Oracle为7.2或更高版本时,清除该选项,此时带INOUT参数的存储过程可作为数据窗口数据源。7.2版本以下,选择该项,调用PBDBMS.PutLine建立存储过程的SQL语句,缺省是选中;CommitonDisconnect:断开连接时,指定提交或回退未提交的事务;CaseSensitive:连接的Oracle服务器是否区分大小写。注意该项选中时,所有主键、包含主键的表名、外键须全为大写字符。PowerBuilderCatalogTablesOwner:指定拥有PB系统表的用户,缺省为“SYSTEM”。如果要使用多种显示格式或有效性规则,可以在不同的用户下建立几套系统表;TableCriteria:指定满足哪些条件的表、视图和同义词可在“SelectTables”对话框中显示出来。例如DEV用户下销售子系统的表都以SALE开头,则可以用SALE、DEV、“TABLE”、“VIEW”指定只显示DEV用户以SALE开头的表和视图;Asynchronous:选择该项,可在一个复杂的SQL语句执行过程中,返回第一行结果前,切换到其他操作;NumberofSecondstoWait:若上一项选中,还可进一步通过该项指定检索数据时,等待数据库响应的时间;RetrieveBlockingFactor:决定数据窗口对象一次可从数据库取出的记录数;NumberofSQLStamentsCached:PB可将数据窗口对象产生的SQL语句和嵌入式SQL语句保存在SQL语句缓冲区,该参数指定缓冲区为PB保留的SQL语句数目。该数值可由下式计算:SQLCache=服务器OPENCURSORS数5(保留的游标数)本连接预期使用的最大游标数;DisableBind:指定是否将输入变量与SQL语句绑定,此参数影响PB为数据窗口对象生成INSERT语句的方式;StaticBind:数据窗口对象检索数据前是否检测SELECT语句的合法性;在Syntax页,还可指定日期、时间的格式等。在Preview页可查看DatabaseProfile设置对应的PowerScript写法。Oracle存储过程的使用归纳起来PB60中调用Oracle存储过程有以下四种方法。方法一:以关键字RPCFUNC声明存储过程;方法二:以DECLAREPROCEDURE语句声明存储过程;方法三:以动态SQL语句实现;方法四:调用函数PBDBMS.PutLine。一般情况下,方法一能得到较好的运行效率和更完善的功能。因此推荐使用方法一。但是某些类型的存储过程只能使用其他方法。以下重点介绍方法一和方法二。两种方法比较起来,有以下几点主要区别:1)方法一适用于具有IN、OUT和INOUT参数的存储过程,而方法二仅支持IN和OUT参数,不支持INOUT参数;2)方法一对参数的数目无限制,方法二最多支持255个参数;3)方法一不支持记录(Recorder)的传递,方法二可传递和接收记录。方法一操作步骤:1)在用户对象画笔中创建一个ClassStandard类型的,从Transaction继承的用户对象。2)在此用户对象中,声明LocalExternalFunctions,将存储过程以RPCFUNC关键字声明为外部函数。在DeclareLocalExternalFunctions对话框中按Procedures按钮选择要调用的后台存储过程,或直接输入类似subroutineTEST(longid,refstringname)RPCFUNCALIASFOR“DEVTEST”的语句。例如中DEVTEST的参数为(idINNUMBER,nameINOUTVARCHAR2)。3)保存该用户对象。4)在Application画笔中,进入应用属性对话框,在VariableTypes页,将上Transaction用户对象设置为缺省的全局变量SQLCA。5)脚本中,编码调用相应的外部函数。形式:SQLCA函数名(参数)。如可用“SQLCATEST(lnid,lsname);”调用例子中定义的DEVTEST存储过程。其中lnid,lsname为调用参数。方法一注意事项:1)由于PB中String类型的数据长度是动态分配的,因此对RefString类型的参数,每次调用前需要申请足够的空间。例如上例从输入的id值检索name,后台声明的NAME数据类型为VARCHAR2(30),每次调用SQLCATEST前需要用lsname=SPACE(30)置lsname为足够长度的空串。2)类似地当传递的参数为数组(后台称PL/SQLTable)时,声明参数为相应类型的动态数组,并在每次调用前设置数组上界为足够大的值。例如:DEV用户的DEPT包中声明了TYPEtblnameISTABLEOFVARCHAR2(30)INDEXBYBINARYINTEGER;存储过程EMPOFDEPT(deptidINNUMBER,nameOUTDEPT.tblname)返回部门编写为deptid的部门的所有员工,置name数组中。假定所有部门的员工数目不超过100,则可用以下语句声明和调用DEVEMPOFDEPT:DeclareExternalFunctions对话框中:SubroutineEMPOFDEPT(longdeptid,refstringname)RPCFUNCALIASFORDEV.EMPOFDEPTPowerScript脚本中:longln=deptidstringlsanamelsaname100=/置动态数组lsaname上界为100lndeptid=2SQLCA.EMPOFDEPT(lndeptid,lsaname)/检索部门2的所有员工的名字方法二使用方法:在脚本中加入如下编码(以DEVTEST为例):longlnidstringlsnamelnid=100DECLAREtestPROCEDUREFORDEV.TEST(:lnid);/test有一个IN参数,一个OUT参数EXECUTEtest;FETCHtestINTO:lsname;方法三使用方法:根据输入输出参数的不同,PB中的动态SQL语句有四种格式:1)无输入输出参数;2)只有输入参数,无输出参数;3)有确定数目输入输出参数;4)输出结果列的数目不定。其中第1)、第2)中格式的动态SQL语句也可用来调用简单的存储过程。1)没有输入输出参数的存储过程。例如DEVDEMO1存储过程没有输入输出参数,可用下列语句调用:sqlstring=EXECUTEDEMO1()EXECUTEIMMEDIATE:sqlstring;2)只有输入参数的存储过程。例如DEV.DEMO2(nameINVARCHAR2,birthdayINDATE)PREPARESQLSAFROMEXECUTEDEMO2(?,?);EXECUTESQLSAUSING:lsname,:ldtbirthday;如果是72以下版本的Oracle,可用方法四PBDMBS.PutLine()函数调用建立存储过程。此时需选上DatabaseProfile中的PBDBMS复选框。存储过程作为数据窗口的数据源以一个简单数据窗口(显示服务器的系统时间)为例说明怎样创建存储过程作为数据源的数据窗口。1)在某个包(如PACKTYPE)中定义日期类型的Recorder自定义数据类型datarec;2)创建返回系统时间的存储过程:P
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年徐州市妇幼保健院招聘医务人员真题
- 2024年菏泽郓城县中医医院引进青年人才真题
- 2025年二手奢侈品鉴定标准与市场趋势研究报告
- 2025年二手交易电商平台信用评价体系与消费者信任度提升策略研究与应用效果研究报告001
- 会计与财务管理培训企业制定与实施新质生产力项目商业计划书
- 仿皮带扣头电竞风格设计创新创业项目商业计划书
- 仪器租赁与共享服务创新创业项目商业计划书
- 2025年儿童教育游戏化教学设计研究:实践案例与效果评价报告
- 大专药学专业题目及答案
- DB1303T 002-2011 酿酒葡萄栽培管理技术规程
- 中医外科学(云南中医药大学)知到智慧树章节答案
- 幼小衔接亲子活动策划方案
- 梵高星空课件
- 北京市2024年中考历史真题【附参考答案】
- 2024年家庭防水施工合同范本
- 10kV电缆线路穿越乐山至成都高速公路涵洞-专项施工方案
- 螺杆空压机微电脑控制器MAM880
- 小学数学对教学评一体化的实践与思考
- 出厂检验大纲
- 放射医学(副高)高级职称考试题库及答案
- 2024届江西省赣州市兴国县小升初必考题语文检测卷含答案
评论
0/150
提交评论