gpt4 book ai didi

java - 调用存储过程

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

在我的时区晚安。

我使用的是 Sybase ase 15,我有一个存储过程,其中两个输入参数都是 VARCHAR,基本上在存储过程中我使用动态 SQL,如下所示:

@cmd = 'select * from TABLE where COL IN'+@PARAM1+'AND COL2=@PARAM2
EXEC(@cmd)

我这样使用 JDBC 调用此过程:

CallableStatement stmt = conn.prepareCall("{call MyStoredProcedure(?,?)}");

stmt.setString(1, "'''0'',''1'''");
stmt.setString(2, '''fr''');
stmt.executeQuery();

它抛出一个错误,通知我调用格式不正确。

但是如果我像这样直接在 IDE 中运行调用:

EXEC  MyStoredProcedure'''0'',''1'',''2'',''3'',''4'',''5'',''6'',''7''','''fr'''

它运行没有任何问题,所以我猜我猜是字符转义有问题。

有人遇到过这个问题吗?

致以最诚挚的问候

提前致谢

最佳答案

您没有指定 IN 和 OUT 参数:

http://docs.oracle.com/javase/tutorial/jdbc/basics/storedprocedures.html

看看遵循教程是否有帮助。

我还要评论您只有两个参数,但您的查询传递的字符串似乎更多。它很丑陋,具有误导性,而且似乎违反了第一范式。

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

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