gpt4 book ai didi

Oracle STANDARD_HASH 在 PLSQL 中不可用?

转载 作者:行者123 更新时间:2023-12-03 03:23:28 30 4
gpt4 key购买 nike

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

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 的最佳方法是什么?

问候

最佳答案

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

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

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 中需要时使用它。

例如,

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 block 中调用函数:

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 中不可用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35574602/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com