2

HSQLDBのMD5に関するドキュメントはやや不足していますが、パスワードのmd5-ingを有効にするために、次の手順に従いました。

CREATE FUNCTION md5(VARBINARY(128))
RETURNS VARBINARY(226)
LANGUAGE JAVA
DETERMINISTIC
NO SQL
EXTERNAL NAME 'CLASSPATH:org.hsqldb.lib.MD5.digest'

パスワードを更新しようとすると、次のようになります。

UPDATE worker SET password = md5('pass123') WHERE wid=1

次のエラーが発生します。

java.sql.SQLException: routine signature not found for: PUBLIC.MD5(CHARACTER)

私はSQLにあまり精通していないので、どこで間違いを犯しているのかわかりません。

4

1 に答える 1

4

バイナリではなく、文字列を使用した関数シグネチャが必要です。

CREATE FUNCTION md5(VARCHAR(128), VARCHAR(10))
RETURNS VARCHAR(256)
LANGUAGE JAVA
DETERMINISTIC
NO SQL
EXTERNAL NAME 'CLASSPATH:org.hsqldb.lib.MD5.encode'

そして、固定のエンコーディング引数を使用して関数を呼び出します。

UPDATE worker SET password = md5('pass123', 'ISO-8859-1') WHERE wid=1
于 2012-05-27T21:10:36.243 に答える