1

这是我目前收到的电话和错误:

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
4

1 回答 1

1

这个问题与引用的使用有关。过程的语法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]);
于 2020-03-07T11:47:52.567 回答