使用python cx_Oracle,如何调用具有多个声明的DBMS_METADATA.SET_TRANSFORM_PA



这是我当前收到的呼叫和错误:

cursor.callproc('DBMS_METADATA.SET_TRANSFORM_PARAM', ['DBMS_METADATA.SESSION_TRANSFORM', 'STORAGE', 'false'])
cx_Oracle.DatabaseError: ORA-06550: line 1, column 7:
PLS-00307: too many declarations of 'SET_TRANSFORM_PARAM' match this call
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

问题与报价的使用有关。程序DBMS_METADATA.SET_TRANSFORM_PARAM的语法

DBMS_METADATA.SET_TRANSFORM_PARAM (
transform_handle   IN NUMBER,
name               IN VARCHAR2,
value              IN VARCHAR2|IN BOOLEAN DEFAULT TRUE|IN NUMBER, 
object_type        IN VARCHAR2 DEFAULT NULL);

最后一个参数(object_type(显然不需要指定,因为它的默认值是NULL

倒数第二个参数(value(可能具有用于数据类型的三个选项。似乎是要作为BOOLEAN。因此,去掉false周围的引号。

最后,第一个参数(transform_handle(也被认为是数字。所以,这里也去掉引号。

因此,将该过程称为

cursor.callproc('DBMS_METADATA.SET_TRANSFORM_PARAM', 
[DBMS_METADATA.SESSION_TRANSFORM, 'STORAGE', false]);

最新更新