存储过程简单案例以及使用方法.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
存储过程简单案例以及使用方法

存储过程使用方法总结以及案例分析   归纳起来PB中调用Oracle存储过程有以下四种方法:   方法一:以关键字RPCFUNC声明存储过程;   方法二:以DECLARE PROCEDURE语句声明存储过程;   方法三:以动态SQL语句实现;   方法四:调用函数PBDBMS.Put-Line。   一般情况下,方法一能得到较好的运行效率和更完善的功能。因此推荐使用方法一。但是某些类型的存储过程只能使用其他方法。以下重点介绍方法一和方法二。   两种方法比较起来,有以下几点主要区别: 方法一适用于具有IN、OUT和IN OUT参数的存储过程,而方法二仅支持IN和OUT参数,不支持IN OUT参数; 方法一对参数的数目无限制,方法二最多支持255个参数; 方法一不支持记录(Recorder)的传递,方法二可传递和接收记录。 一、方法一操作步骤:   1)在用户对象画笔中创建一个Class-Standard类型的,从Transaction继承的用户对象。   2)在此用户对象中,声明Local External Functions,将存储过程以RPCFUNC关键字声明为外部函数。在Declare Local External Functions对话框中按Procedures按钮选择要调用的后台存储过程,或直接输入类似subroutine TEST(long id,ref string name)RPCFUNC ALIAS FOR “DEV TEST”的语句。例如中DEVTEST的参数为(id IN NUMBER,name IN OUT VARCHAR2)。   3)保存该用户对象。   4)在Application画笔中,进入应用属性对话框,在Variable Types页,将上Transaction用户对象设置为缺省的全局变量SQLCA。   5)脚本中,编码调用相应的外部函数。形式:SQLCA函数名(参数)。如可用“SQLCATEST(ln—id,ls—name);”调用例子中定义的DEVTEST存储过程。其中ln—id,ls—name为调用参数。   方法一注意事项: 由于PB中String类型的数据长度是动态分配的,因此对Ref String类型的参数,每次调用前需要申请足够的空间。例如上例从输入的id值检索name,后台声明的NAME数据类型为VARCHAR2(30),每次调用SQLCATEST前需要用ls_name=SPACE(30)置ls_name为足够长度的空串。 2) 类似地当传递的参数为数组(后台称PL/SQL Table)时,声明参数为相应类型的动态数组,并在每次调用前设置数组上界为足够大的值。例如:DEV用户的DEPT包中声明了TYPE tbl—name IS TABLE OF VARCHAR2(30) INDEX BY BINARY—INTEGER;存储过程EMP—OF—DEPT(dept—id IN NUMBER,name OUT DEPT.tbl—name)返回部门编写为dept—id的部门的所有员工,置name数组中。假定所有部门的员工数目不超过100,则可用以下语句声明和调用DEVEMP—OF—DEPT:   Declare External Functions对话框中:   Subroutine EMP—OF—DEPT(long dept—id,ref string name[]) RPCFUNC ALIAS FOR ″DEV.EMP_OF_DEPT ″   PowerScript脚本中:   long ln=dept—id   string lsa—name[]   ……   lsa—name[100]=″ //置动态数组lsa—name上界为100   ln—dept—id=2   SQLCA.EMP—OF—DEPT(ln—dept—id,lsa—name) //检索部门2的所有员工的名字   二、方法二使用方法:   在脚本中加入如下编码(以DEVTEST为例):   long ln—id   string ls—name   ln—id=100   DECLARE test PROCEDURE FOR DEV.TEST(:ln—id); //test有一个IN参数,一个OUT参数   EXECUTE test;   FETCH test INTO:ls—name;  三、方法三使用方法:   根据输入输出参数的不同,PB中的动态SQL语句有四种格式:1)无输入输出参数;2)只有输入参数,无输出参数;3)有确定数目输入

文档评论(0)

sd44055 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档