1 可以用table类型变量数组,但是也必须预先定义。
2 两个服务器是什么意思?即使你采用三层结构,对数据库服务器来说,中间层服务器也是客户端,哪里存在两个服务器?

解决方案 »

  1.   

    第二点是我在书上看到的,使用游标变量的限制
    原文是:远端子程序不能返回游标变量的值,游标变量可以在客户端和服务器端PL/SQL之间传递,但是不能在两个服务器之间传递。我想远端可能是指不同的ORACLE服务器吧。第二个问题,是我邦朋友问的,他是用JSP的,JSP--WEBLOGIC--ORACLE
    据他所说如果JSP直接访问ORACLE是可以啦,但是再经过WEBLOGIC一层就无法返回游标变量了。不知道是为什么。
      

  2.   

    说到表类型数组,我也有一个问题想问。假设:在包中定义t_Students表变量,想做为存储过程的返回值TYPE r_Students IS RECORD(
          id int,
          name varchar2(20)
    )
    TYPE t_Students IS TABLE OF r_Students INDEX BY BINARY_INTEGER;PL/SQL是编译成功,运行通过了。
    可是在ASP调用时,却报告Microsoft OLE DB Provider for Oracle 错误 '80004005' 提供程序不支持带有 RECORD 或 TABLE 变量的 PL/SQL 存储过程/函数。 如果将以上定义分别定义为两个表变量,作为两个输出参数,则不会出错,请问这是为什么???
      

  3.   

    据我理解,在 宿主程序 与 ORACLE 程序之间,宿主变量与ORACLE外部变量都有一个对应关系。因此对于不固定字段数的结果集,只有通过在宿主程序中使用游标一步一步完成,而不能通过调用过程、或函数的方式一口吃成大胖子:)
    不过,也许有办法,还得研究。