1

我想为 datetime 创建一个 cx_Oracle arrayvar,然后我可以使用它来提供 callproc。所以我期望的代码是这样的:

dt1 = datetime.datetime.strptime('2012/07/30 10:42:09', '%Y/%m/%d %H:%M:%S')
dt2 = ...(another datetime value)...
av1 = cursor.arrayvar(cx_Oracle.DATETIME, [dt1, dt2])
av2 = ...(another arrayvar)...
cursor.callproc('my_db_procedure', (av1, av2))

但是我不断收到此错误:

PLS-00306: wrong number or types of arguments in call to 'my_db_procedure'

有人可以指出我做错了什么吗?

4

1 回答 1

1

好的,最后我发现了问题所在。在我的 PL/SQL 代码中,我将输入参数类型定义为:

TYPE id IS TABLE OF varchar2(16);

实际上应该是:

TYPE id IS TABLE OF varchar2(16) INDEX BY BINARY_INTEGER;

我希望这可以帮助有类似问题的人。

于 2012-11-13T17:33:26.490 回答