如何执行TOAD for Oracle的函数并将结果绑定到数据网格

如何执行TOAD for Oracle的函数并将结果绑定到数据网格,oracle,plsql,toad,Oracle,Plsql,Toad,我有一个函数,它的参数之一是pl/sql对象变量。如何执行此存储过程并将其返回的结果集绑定到TOAD for Oracle中的数据网格?经过一番搜索,我找到了自己问题的答案。假设您的varray类型称为varchar\u pair\u array,存储在该数组中的对象称为varchar\u pair\u object。varchar\u pair\u对象是一个简单的对象,它有两个varchar作为其成员 以下是执行接收varchar\u pair\u对象的varray的过程的代码: 在TOAD的

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

经过一番搜索,我找到了自己问题的答案。假设您的varray类型称为varchar\u pair\u array,存储在该数组中的对象称为varchar\u pair\u object。varchar\u pair\u对象是一个简单的对象,它有两个varchar作为其成员

以下是执行接收varchar\u pair\u对象的varray的过程的代码:

在TOAD的sql编辑器中复制粘贴此代码,并对其进行更改以适应您的函数和类型,然后点击F9。蟾蜍会问您:to_网格变量的类型。选择cursor(假设函数返回ref cursor)并按enter键。TOAD将结果集绑定到数据网格

帮助我的链接:

(关于收藏的好教程) (在这种情况下,关于声明和初始化对象的部分特别有用)


只需很少的更改,就可以用一个过程来完成相同的操作。

还可以查看模式浏览器中的“执行过程”功能。它有一个选项,可以在执行后将ref游标结果加载到网格中。它还有一个优点,就是它可以记住您上次执行该过程时使用的参数。问题是,对于复杂类型(如varray和对象),它不会(不能?)为复杂类型生成sql,您需要自己初始化它们。是的,但这就是为什么它允许您在执行之前编辑代码:)是的。事实上,这段代码的大部分是由TOAD从execute过程生成的。我只是不知道如何编辑代码以传入一个对象数组,这就是我最初在这里提出这个问题的原因。谢谢
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;