【发布时间】:2012-11-27 07:57:09
【问题描述】:
create or replace
FUNCTION test_fun (
p_ref_cur OUT SYS_REFCURSOR,
p_a_code IN NUMBER DEFAULT 0,
p_category IN package.category%TYPE DEFAULT NULL,
p_name IN package.name%TYPE DEFAULT NULL,
p_display_name IN package.display_name%TYPE DEFAULT NULL,
p_rowid IN package."rowid"%TYPE DEFAULT NULL,
p_flg IN package.flg%TYPE DEFAULT '1',
p_mod_dat IN package.mod_dat%TYPE DEFAULT SYSTIMESTAMP,
p_mod_usr IN package.mod_usr%TYPE DEFAULT NULL
)
RETURN NUMBER
AS
如何在以SYS_REFCURSOR为OUT参数的oracle中调用该函数?
更新: **test_fun** 将从另一个函数调用,例如 caller(),其中要执行的完整函数将从数据库中获取并使用 execute immediate 命令执行。
SELECT command into cmd from data_table where id=p_id;
execute immediate (cmd);
cmd 值会像
test_fun(v_cv1,0, 'pp', 'np123', 'np', NULL, 1, NULL, 'testuser');
注意:我们可以控制 caller() 函数和要执行的 cmd,但无法控制 test_fun()
非常感谢任何帮助。
【问题讨论】:
-
不将游标声明为 IN OUT 有什么具体原因吗?
-
就是这样。我无法控制它。
-
您使用的是哪个 SQL 客户端?引用游标的处理非常客户端特定。
标签: sql oracle call sql-function