【发布时间】:2017-06-15 06:45:52
【问题描述】:
我有以下代码:
procedure Replace(sUser in Varchar2,sNomTable in varchar2,sColonne in varchar2,sID in Varchar2,nbCharAlterer IN NUMBER) is
l_cursor NUMBER;
l_return NUMBER;
l_ref_cursor SYS_REFCURSOR;
TYPE t_tab IS TABLE OF VARCHAR2(4000);
l_tab t_tab;
l_tab_Id t_tab;
sChaine VARCHAR2(4000 CHAR);
sqlReq CONSTANT VARCHAR2(1000):= 'select ' || sId || ',' || sColonne || ' from ' || sUser || '.' || sNomTable ;
begin
--
l_cursor := DBMS_SQL.open_cursor;
DBMS_SQL.parse(l_cursor, sqlReq, DBMS_SQL.NATIVE);
l_return := DBMS_SQL.EXECUTE(l_cursor);
-- Connvert from DBMS_SQL to a REF CURSOR.
l_ref_cursor := DBMS_SQL.to_refcursor(l_cursor);
这里我收到以下错误:
pls 00302 component 'TO_REFCURSOR' must be declared
因为我的 oracle 版本是 10g。
知道如何在 Oracle 10g 中做同样的事情吗?
【问题讨论】:
-
好吧,我猜是因为我使用的是 Oracle 10g,而 to_refcursor 仅适用于 11g 及更高版本。知道如何在 Oracle 10g 中做同样的事情吗?
-
我认为您不能在 Oracle 10g 中将 DBMS_SQL 转换为 RefCursor。您必须留在 DBMS_SQL 中并在那里进行所有操作。这是可能的——只是你必须编写更多的代码。
-
如果你想在 10g 中从 dbms_sql 切换到原生动态 sql,为什么不首先使用原生动态 sql 开始呢?您的示例可以很容易地转换。
-
@Boneist : 你能解释一下如何转换我的例子吗?
标签: oracle plsql oracle10g dynamic-sql