gpt4 book ai didi

java - PL/SQL JAVA ORACLE 错误 ORA-00904 : INVALID IDENTIFIER

转载 作者:行者123 更新时间:2023-11-29 04:31:21 24 4
gpt4 key购买 nike

当我运行我的程序时出现错误:

ORACLE ERROR ORA-00904: "PACJENT_ODDZIAL": INVALID IDENTIFIER

不知道哪里出了问题。
我正在使用 NetBeans 和 SQL Developer。

这是我的 Java 代码:

private String PacjentOddzial() {
String PacjentOddzial = "null";

con = Polaczenie.ConnectDB();

String sql = "SELECT pacjent_oddzial (" + Login.login + ") from dual";
try {
pst = con.prepareStatement(sql);
rs = pst.executeQuery();

if (rs.next()) {
String add1 = rs.getString(1);
PacjentOddzial = add1;
}
} catch (SQLException | HeadlessException e) {
JOptionPane.showMessageDialog(null, e);
}
return PacjentOddzial;
}

这是 PL/SQL 函数:

create or replace FUNCTION pacjent_oddzial
(PES IN NUMBER)
RETURN VARCHAR2
IS
ILE VARCHAR2(30);
ZMIENNA NUMBER;
BEGIN
SELECT PACJENTID INTO ZMIENNA FROM PACJENT WHERE PESEL=PES;

SELECT NAZWAODDZIALU INTO ILE FROM PRZYJECIE_NA_ODDZIAL WHERE
PACJENTID=ZMIENNA and rownum=1;

RETURN ILE;
end;

最佳答案

SELECT 的语法错误:

String sql = "SELECT pacjent_oddzial ("+Login.login+") from dual";

该查询的结果应如下所示:

SELECT pacjent_oddzial (some_string) from dual
-- ------------------------^^^^^^

这不是正确的语法。


如果您尝试调用您的函数,那么这也不正确,您可以使用以下语法:

{? = call CREATE_A_PERSON (?)}
1 2 3

哪个:

  • (1)是返回值
  • (2) 您的函数名称
  • (3) 是你方法的参数
    String query = "{? = call pacjent_oddzial (?)}";    CallableStatement stm = conn.prepareCall(query);    stm.registerOutParameter(1, Types.VARCHAR);//return value    stm.setString(2, Login.login);//set the parametter    String return = stm.getString(1);//the result of your function

在这里看看:

JDBC CallableStatement – Stored Procedure OUT parameter example

关于java - PL/SQL JAVA ORACLE 错误 ORA-00904 : INVALID IDENTIFIER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43710382/

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