使用 python cx_Oracle,如何调用具有多个声明的 DBMS_METADATA.SET_TRANSFORM_PARAM?
Using python cx_Oracle, how do I call DBMS_METADATA.SET_TRANSFORM_PARAM, which has multiple declarations?
这是我目前收到的呼叫和错误:
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]);
这是我目前收到的呼叫和错误:
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]);