Here's the call and error I currently receive:
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
The issue is related to the use of quotations. The syntax for the procedure 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);
the last parameter(object_type
) needn't to be specified obviously, since it has NULL
value as default.
the penultimate parameter(value
) might have three options for data type. Seems that is intended to be as BOOLEAN
. So, remove quotes around false
.
lastly, the first parameter(transform_handle
) is also considered as numeric. So, remove quotes here too.
As a result, call the procedure as
cursor.callproc('DBMS_METADATA.SET_TRANSFORM_PARAM',
[DBMS_METADATA.SESSION_TRANSFORM, 'STORAGE', false]);