Я храню CLOB в Oracle.Чтобы ускорить поиск идентичных объектов CLOB, я хотел бы ввести значение хеш-функции объектов CLOB.До сих пор я пробовал:
- ВСТАВИТЬ КЛОБ
- ОБНОВИТЬ значение хеш-функции, основанное на сохраненном буфере.
Как это можно сделать за один раз?операция вместо двух?
#!/usr/local/bin/python3
import cx_Oracle
con = cx_Oracle.connect('scott/tiger@localhost:1512/ORCLPDB1', encoding="UTF-8")
cursor = con.cursor()
cursor.execute("CREATE TABLE t (id NUMBER, script CLOB, script_hash RAW(32))")
my_text = '$'*2**10
statement = "INSERT INTO t (id, script) VALUES (:my_id, :my_clob)"
cursor.execute(statement, (1, my_text))
statement = """
UPDATE t
SET script_hash = DBMS_CRYPTO.HASH(script, 2)
WHERE id = :my_id"""
cursor.execute(statement, {'my_id': 1})
con.commit()
con.close()
Это не работает:
statement = """
INSERT INTO t (id, script, script_hash)
VALUES (:my_id, :my_clob, DBMS_CRYPTO.HASH(:my_clob, 2))"""
cursor.execute(statement, (2, my_text, my_text))
# cx_Oracle.DatabaseError: ORA-01465: invalid hex number
(Oracle 12.2 с использованием Python и cx_Oracle 6.3)