gpt4 book ai didi

java - 在java中调用Oracle过程

转载 作者:行者123 更新时间:2023-12-02 02:34:53 25 4
gpt4 key购买 nike

我在oracle中有一个程序,可以用一进一出参数解密密码。我试图按如下方式调用我的 java 程序,但它显示 SQLGrammarException。我是 Oracle 新手,第一次尝试这个。抱歉,我在互联网上搜索,但没有找到任何内容。在 SQL Server 中我就是这样使用的。

Iterator it = hibernateSession.createSQLQuery("EXEC DAN_DANAPP_DECRYPPWD '" + username.getText().trim() + "'").list().iterator();

它正在 SQL Server 中运行。当我在 Oracle 中尝试相同的方法时,它不起作用。谁能指出我犯了什么错误。

我的Oracle程序如下

CREATE OR REPLACE PROCEDURE DAN0703.DAN_DANAPP_DECRYPPWD 
(EMPNO IN VARCHAR2,P_STRING OUT VARCHAR2)
IS

P_KEY_STRING VARCHAR2(12) := 'xxxxxxxxxxxx';
P_ERROR_NO NUMBER;
RAW_KEY RAW(128);
DECRYPTED_RAW RAW(2048);

BEGIN

RAW_KEY := UTL_RAW.CAST_TO_RAW(P_KEY_STRING);

select USER_PASSWD into P_STRING FROM MENU_USER WHERE USER_ID = EMPNO AND
USER_FLAG = 'O' and (USER_DISABLE_FLAG='N' or USER_DISABLE_FLAG='V');

DBMS_OBFUSCATION_TOOLKIT.DESDECRYPT(INPUT => P_STRING, KEY => RAW_KEY,
DECRYPTED_DATA => DECRYPTED_RAW );

P_STRING := UTL_RAW.CAST_TO_VARCHAR2(DECRYPTED_RAW);

END;

预先感谢您的支持。

最佳答案

也许是这样的:

Iterator it = loginsession.createSQLQuery("CALL DAN_DANAPP_DECRYPPWD(:EMPNO)")
.setParameter("EMPNO", username.getText().trim()).list().iterator();

编辑

解释使用 JPA 处理参数的链接:

https://vladmihalcea.com/how-to-call-oracle-stored-procedures-and-functions-from-hibernate/

关于java - 在java中调用Oracle过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46526516/

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