Во-первых, это было бы более просто, если бы onclick обработчик был установлен этот путь:
Select
Тогда itemid и itemname нужно оставить для JavaScript (то есть, "
становится \"
, и т.д.).
при использовании Java на стороне сервера Вы могли бы смотреть на класс StringEscapeUtils от общего Ленга Джакарты. Иначе не должно занимать слишком много времени писать Ваш собственный 'escapeJavascript' метод.
Пакет DBMS_CRYPTO - это правильный пакет для генерации хэшей. Он не предоставляется PUBLIC по умолчанию, вам придется предоставить его специально ( GRANT EXECUTE ON SYS.DBMS_CRYPTO TO user1
).
Результатом этой функции является тип данных RAW
. Вы можете сохранить его в столбце RAW
или преобразовать в VARCHAR2
, используя функции RAWTOHEX
или UTL_ENCODE.BASE64_ENCODE
.
Функция HASH
перегружена, чтобы принимать в качестве входных данных три типа данных: RAW
, CLOB
и BLOB
. Согласно правилам неявного преобразования , если вы используете VARCHAR2
в качестве входных данных, Oracle попытается преобразовать его в RAW
и, скорее всего, потерпит неудачу, поскольку это преобразование работает только с шестнадцатеричными строками.
Если вы используете VARCHAR2
, вам необходимо преобразовать входные данные в двоичный тип данных или CLOB
, например:
DECLARE
x RAW(20);
BEGIN
SELECT sys.dbms_crypto.hash(utl_raw.cast_to_raw(col1||col2||to_char(col3)),
sys.dbms_crypto.hash_sh1)
INTO x
FROM t;
END;
дополнительную информацию вы найдете в документации DBMS_CRYPTO.hash