2012-03-29 53 views
2

我知道有一個函數可以從Oracle中的varchar中獲取散列值,但是當我運行查詢來查看返回的值時,它會發送以下消息。Oracle中的散列字符串

ORA-00904: : identificador no válido 
00904. 00000 - "%s: invalid identifier" 
*Cause:  
*Action: 
Error en la línea: 70, columna: 7 

我在做什麼是以下幾點:

select DBMS_CRYPTO.hash(utl_raw.cast_to_raw('Foo'), 3) FROM dual; 

它應該返回SHA-1的字符串。

+0

實際的答案在這裏:https://dba.stackexchange.com/q/56658/23369。 (對於Oracle而言,heck是錯誤的) – jpmc26 2017-09-28 23:38:50

回答

3

這對我的作品

SQL> select DBMS_CRYPTO.hash(utl_raw.cast_to_raw('Foo'), 3) FROM dual; 

DBMS_CRYPTO.HASH(UTL_RAW.CAST_TO_RAW('FOO'),3) 
-------------------------------------------------------------------------------- 
201A6B3053CC1422D2C3670B62616221D2290929 

你確定運行此用戶已經被授予兩個UTL_RAWDBMS_CRYPTOEXECUTE訪問?如果您的代碼的第70行是這樣的SELECT聲明,我打賭第7列是DBMS_CRYPTO呼叫開始的位置,並且您無權訪問DBMS_CRYPTO程序包。

+0

對於UTL_RAW,我確定它具有訪問權限,因爲如果我運行'從雙選擇utl_raw.cast_to_raw('Foo');'它確實返回一個值。對於DBMS_CRYPTO,我並不完全確定,但是如果我執行'select * from ALL_OBJECTS A WHERE A.OBJECT_TYPE ='PACKAGE';'出現這個包,所以我想我可以訪問 – BRabbit27 2012-03-29 16:23:25

+1

@ BRabbit27 - 如果語句在添加打電話給DBMS_CRYPTO,這似乎是一個公平的賭注,這是對DBMS_CRYPTO的調用導致您的'無效標識符'錯誤。 – 2012-03-29 16:34:46

+0

我會用我的DBA檢查一下,非常感謝! – BRabbit27 2012-03-29 16:40:25