Oracle 10g中的DMBS_SQL.to_refcursor等效项

时间:2009-11-17 19:27:16

标签: sql oracle10g ref-cursor

我有一个遇到DBMS_SQL.to_refcursor的同事,这对他来说是一个很好的解决方案,可以传回他需要的refcursor,但是我们运行的是Oracle 10g,这个功能只能在11g中使用。

在Oracle 10g中是否容易相当于此?

我们开发了另一种编码解决方案的方法,但是在DBMS_SQL中使用绑定变量会更容易,但是我们不希望这个包变得过于难以管理,因为它会被传递给其他程序员要维护。

1 个答案:

答案 0 :(得分:0)

link lists the various dynamic SQL alternatives available,包括DBMS_SQL.to_refcursor。我大多倾向于使用OPEN ... FOR符号:

L_CURSOR SYS_REFCURSOR;
L_QUERY  VARCHAR2(5000) DEFAULT '...'

BEGIN

   FOR I IN 0 .. (TRUNC(LENGTH(L_QUERY) / 255)) LOOP
     DBMS_OUTPUT.PUT_LINE(SUBSTR(L_QUERY, I * 255 + 1, 255));
   END LOOP;

   OPEN L_CURSOR FOR L_QUERY;
   RETURN L_CURSOR;

END;

更新

  

不幸的是,在我的情况下,这不起作用,因为我绑定了不同数量的变量。这就是我使用DBMS_SQL包以编程方式绑定变量而不是使用语法的原因。

我建议在这种情况下使用context variables - 从9i开始就支持它们。