How can this be done in one operation instead of two?
!/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()
This doesn't work:
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 using Python and cx_Oracle 6.3)
试试:
参考[Making a sha1-hash of a row in Oracle
](https://stackoverflow.com/que...