4

我有一个函数,它的参数之一是 pl/sql 对象的 VARRAY。如何执行此存储过程并将其返回的结果集绑定到 TOAD for Oracle 中的数据网格?

4

1 回答 1

9

经过一番搜索,我找到了自己问题的答案。假设您的可变数组类型称为 varchar_pair_array,而存储在此数组中的对象称为 varchar_pair_object。varchar_pair_object 是一个简单的对象,它有两个 varchar 作为它的成员。

下面是执行一个接受 varchar_pair_object (s) 变量数组的 proc 的代码:

DECLARE 
  RetVal SYS_REFCURSOR;
  a_simplevalue VARCHAR2(200);
  another_simplevalue VARCHAR2(200);
  my_array_of_varchar_pairs VARCHAR_PAIR_ARRAY; -- assume varchar_pair_array is defined somewhere else
  my_obj VARCHAR_PAIR_OBJECT; -- assume varchar_pair_object is defined somewhere else
  my_other_obj VARCHAR_PAIR_OBJECT;
BEGIN 
  a_simplevalue := 'hello';
  another_simplevalue := 'there';
  my_obj := VARCHAR_PAIR_OBJECT('nice to meet you', 'greetings');
  my_other_obj := VARCHAR_PAIR_OBJECT('goodbye', 'ciao');
  my_array_of_varchar_pairs := VARCHAR_PAIR_ARRAY(); 
  my_array_of_varchar_pairs.EXTEND(2); -- this should be the number of objects you plan to put into the array
  my_array_of_varchar_pairs(1) := my_obj;
  my_array_of_varchar_pairs(2) := my_other_obj; 

  RetVal := my_function ( a_simplevalue, another_simplevalue, my_array_of_varchar_pairs); -- assuming your array takes two varchars and one array of VARCHAR_PAIR_OBJECT (s)
  :to_grid := RetVal;

END;

将此代码复制粘贴到 TOAD 的 sql 编辑器中并更改它以适应您的功能和类型,然后按 F9。TOAD 会询问您 :to_grid 变量的类型。选择光标(假设您的函数返回一个参考光标)并按回车键。TOAD 将结果集绑定到数据网格。

对我有帮助的链接:

http://www.smart-soft.co.uk/Oracle/oracle-plsql-tutorial-part-11.htm(关于收藏的好教程) http://download.oracle.com/docs/cd/B10501_01/appdev .920/a96624/10_objs.htm#1972(在这种情况下特别有用的是关于声明和初始化对象的部分)

只需很少的更改,就可以通过程序完成相同的操作。

于 2010-05-13T22:34:31.900 回答