gpt4 book ai didi

java - "call"用于调用 mysql 函数在 jdbc 上工作但在 mysql 上不工作

转载 作者:行者123 更新时间:2023-11-29 05:08:15 28 4
gpt4 key购买 nike

我在 Java 中有一个函数,它使用可调用语句并使用单词“call”调用 MySQL 中模式的函数。它工作正常。

但是如果在我的 sql 中我写:

call myFunction(); ( in this case :call getNumberOfIdeasDB();)

它不会工作我得到:

PROCEDURE ... doesnt exist.

令我感到奇怪的是,它在 Java 中有效,但在 MySQL 中无效。你能帮我理解为什么吗。

这是我在 Java 中的函数,尽管我认为它不相关。

public static double getNumberOfIdeasDB() {

Connection co = riverManager.getConnection("jdbc:...");
CallableStatement ps = co.prepareCall("{?= call getNumberOfIdeasThisWeek()}"); //10

ps.registerOutParameter(1, java.sql.Types.DOUBLE);

ps.execute();

return ps.getDouble(1);
}

它在 try-catch 中并且工作正常我只是不知道为什么“调用”这个词在这里起作用。

最佳答案

{?= call ...} 是执行存储过程的 JDBC 转义(它在 JDBC 规范中定义)。这种转义允许您以相对独立于数据库的方式编写存储过程调用。

然后 JDBC 驱动程序必须将其转换为底层数据库的正确语句。

函数是否应该被调用是完全不同的事情,但 MySQL Connector/J 的实现认为它是。

关于java - "call"用于调用 mysql 函数在 jdbc 上工作但在 mysql 上不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44400329/

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