【发布时间】:2013-10-10 17:21:26
【问题描述】:
输入
包名称 (IN)
过程名称(或函数名称)(IN)
一个由整数索引的表,它将包含将用于执行过程(IN/OUT)的值。
例如
假设我们要执行下面的过程
utils.get_emp_num(emp_name IN VARCHAR
emp_last_name IN VARCHAR
emp_num OUT NUMBER
result OUT VARCHAR);
我们将创建的过程将作为输入:
package_name = utils
procedure_name = get_emp_num
table = T[1] -> name
T[2] -> lastname
T[3] -> 0 (any value)
T[4] -> N (any value)
run_procedure(package_name,
procedure_name,
table)
主过程应该返回已经在输入中设置的同一张表,但带有过程的执行结果
table = T[1] -> name
T[2] -> lastname
T[3] -> 78734 (new value)
T[4] -> F (new value)
有什么想法吗?
【问题讨论】:
-
当你应该描述你的问题时,听起来你已经跳到了一个解决方案上。我无法想象这是执行任何操作的好方法......那么,你的问题是什么?
-
Lua 脚本将调用 Pro*c 函数,该函数将执行该过程并将数据表(结果)返回给 Lua 函数以供进一步使用。我没有找到从 Lua 脚本获取过程结果的更好方法。
-
是的,但是您是否需要使用完全相同的调用来调用 every 过程。根据您需要调用的过程更改您的 Pro*C 调用可能更正常,而不是更改数据库以相同地调用所有内容。
-
Proc 是编译语言,Proc 将包含所有用户的主要处理(相同),而 Lua 脚本将用作插件(它取决于用户,它会有所不同),脚本将是一个简单的 .Lua 文件(不是二进制文件),只需向 Proc 程序提供 PATH 即可调用。这是为了避免为每个用户提供特定版本的 Proc 代码,并允许 Lua 脚本在不修改 Pro*C 代码的情况下执行任何过程/函数。