我正在尝试从DBMS_COMPARISON package调用COMPARE function
我首先通过以下方式创建比较:
import cx_Oracle
host = host
service_name = service_name
port = port
password = password
username = username
dsn = cx_Oracle.makedsn( host, port,
service_name=service_name )
db = cx_Oracle.connect(username, password, dsn )
keyword_parameters = {
'comparison_name':'my_comparison',
'schema_name':'my_schema',
'object_name':'table_name',
'dblink_name':'db_link'
}
cur.callproc('DBMS_COMPARISON.CREATE_COMPARISON', keywordParameters = keyword_parameters)现在我想调用函数DBMS_COMPARISON.COMPARE
DBMS_COMPARISON.COMPARE(
comparison_name IN VARCHAR2,
scan_info OUT COMPARISON_TYPE,
min_value IN VARCHAR2 DEFAULT NULL,
max_value IN VARCHAR2 DEFAULT NULL,
perform_row_dif IN BOOLEAN DEFAULT FALSE)
RETURN BOOLEAN;我试过了
cur.callfunc('DBMS_COMPARISON.COMPARE', int,
keywordParameters={'comparison_name':'my_comparison', 'scan_info':cur.var(int), 'perform_row_dif':'TRUE'})或者是某种变种。我很难理解如何设置在调用函数中指定的returnType,以及如何为DBMS_COMPARISON.COMPARE函数调用设置所需的布尔值
发布于 2018-10-24 12:47:04
这里有一个简单的例子,无论如何,它对我来说是有效的!关键是将"bool“类型传递给cursor.callfunc()调用。
create function IsNumber (a_Value varchar2) return boolean is
t_Value number;
begin
begin
t_Value := to_number(a_Value);
return true;
exception
when others then
return false;
end;
end;
/对应的Python代码如下:
print(cursor.callfunc("IsNumber", bool, ("5",)))
print(cursor.callfunc("IsNumber", bool, ("Fred",)))这将输出值
真假
https://stackoverflow.com/questions/52770057
复制相似问题