您现在的位置是:首页 >

数据库访问接口 PB内置Oracle数据库接口的使用方法[2]

火烧 2022-10-12 19:35:51 1051
PB内置Oracle数据库接口的使用方法[2]    )类似地当传递的参数为数组(后台称PL/SQL Ta le)时 声明参数为相应类型的动态数组 并在每次调用前设置数组上界为足够大的值 例如 DEV

PB内置Oracle数据库接口的使用方法[2]  

   )类似地当传递的参数为数组(后台称PL/SQL Table)时 声明参数为相应类型的动态数组 并在每次调用前设置数组上界为足够大的值 例如 DEV用户的DEPT包中声明了TYPE tbl name IS TABLE OF VARCHAR ( ) INDEX BY BINARY INTEGER;存储过程EMP OF DEPT(dept id IN NUMBER name OUT DEPT tbl name)返回部门编写为dept id的部门的所有员工 置name数组中 假定所有部门的员工数目不超过 则可用以下语句声明和调用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[ ]=″ //置动态数组lsa name上界为

  

  ln dept id=

  SQLCA EMP OF DEPT(ln dept id lsa name) /

  /检索部门 的所有员工的名字

  方法二使用方法

  在脚本中加入如下编码(以DEV TEST为例)

  long ln id

  string ls name

  ln id=

  DECLARE test PROCEDURE FOR DEV TEST( ln id)

  //test有一个IN参数 一个OUT参数

  EXECUTE test;

  FETCH test INTO:ls name;

  方法三使用方法

  根据输入输出参数的不同 PB中的动态SQL语句有四种格式

   )无输入输出参数 )只有输入参数 无输出参数 )有确定数目输入输出参数 )输出结果列的数目不定 其中第 ) 第 )中格式的动态SQL语句也可用来调用简单的存储过程

   )没有输入输出参数的存储过程 例如DEVDEMO 存储过程没有输入输出参数 可用下列语句调用

  sqlstring=″EXECUTE DEMO ()″

  EXECUTE IMMEDIATE:sqlstring;

   )只有输入参数的存储过程 例如DEV DEMO (name IN VARCHAR birthday IN DATE)

  PREPARE SQLSA FROM ″EXECUTE DEMO (? ?) ″

  EXECUTE SQLSA USING:ls name :ldt birthday;

  如果是 以下版本的Oracle 可用方法四PBDMBS Put Line()函数调用建立存储过程 此时需选上Database Profile中的PBDBMS复选框

  存储过程作为数据窗口的数据源

  以一个简单数据窗口(显示服务器的系统时间)为例说明怎样创建存储过程作为数据源的数据窗口

   )在某个包(如PACK TYPE)中定义日期类型的Recorder自定义数据类型datarec;

数据库访问接口 PB内置Oracle数据库接口的使用方法[2]

   )创建返回系统时间的存储过程

  PROCEDURE get sysdata(sysdt IN OUT PACK TYPE datarec)IS

  BEGIN

  open sysdt for select sysdate from dual;

  END;

   )新建数据窗口 数据源选择Stored Procedure;

   )在随后的Select Stored Procedure对话框中选择get sysdate即可

  如果作为数据源的存储过程有IN参数 则这些参数就是数据窗口的检索参数(Retrieve Argument)

lishixinzhi/Article/program/PB/201311/24642  
永远跟党走
  • 如果你觉得本站很棒,可以通过扫码支付打赏哦!

    • 微信收款码
    • 支付宝收款码