本文介绍了Oracle STANDARD_HASH在PLSQL中不可用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在PL/SQL中使用STANDARD_HASH Oracle(12c)函数,但似乎不可用:

I'm trying to use STANDARD_HASH Oracle (12c) function in PL/SQL but seems not available:

SQL> exec   dbms_output.put_line(STANDARD_HASH('test'));
BEGIN dbms_output.put_line(STANDARD_HASH('test')); END;

                           *
ERROR at line 1:
ORA-06550: line 1, column 28:
PLS-00201: identifier 'STANDARD_HASH' must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

从sql正常工作:

SQL> select STANDARD_HASH('test') from dual;

STANDARD_HASH('TEST')
----------------------------------------
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

为什么?在PLSQL中实现STANDARD_HASH的最佳方法是什么?

Why? What is the best way to implement the STANDARD_HASH in PLSQL?

致谢

推荐答案

似乎还不是12c中PL/SQL的一部分.

Seems like it isn't yet a part of PL/SQL in 12c.

作为解决方法,请在 PL/SQL 中使用SELECT INTO:

As a workaround, use SELECT INTO in PL/SQL:

SQL> set serveroutput on
SQL> DECLARE
  2    str VARCHAR2(40);
  3  BEGIN
  4    SELECT STANDARD_HASH('test') INTO str FROM dual;
  5    dbms_output.put_line(str);
  6  END;
  7  /
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

PL/SQL procedure successfully completed.

SQL>

我建议创建一个函数,并在 PL/SQL 中在需要时使用它.

I would suggest to create a function, and use it whenever you need it in PL/SQL.

例如,

SQL> CREATE OR REPLACE FUNCTION STANDARD_HASH_OUTPUT(str IN VARCHAR2)
  2    RETURN VARCHAR2
  3  AS
  4    op VARCHAR2(40);
  5  BEGIN
  6    SELECT STANDARD_HASH(str) INTO op FROM dual;
  7    RETURN op;
  8  END;
  9  /

Function created.

直接在 PL/SQL块中调用功能:

SQL> BEGIN
  2     dbms_output.put_line(STANDARD_HASH_OUTPUT('test'));
  3  END;
  4  /
A94A8FE5CCB19BA61C4C0873D391E987982FBBD3

PL/SQL procedure successfully completed.

SQL>

这篇关于Oracle STANDARD_HASH在PLSQL中不可用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 23:11