2

在我的时区晚安。

我使用的是 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'''

它运行没有任何问题,所以我猜我猜字符转义存在一些问题。

有人遇到过这个问题吗?

致以最诚挚的问候

提前致谢

4

1 回答 1

0

您不指定 IN 和 OUT 参数:

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

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

我还要评论说您只有两个参数,但您的查询传递的字符串似乎更多。这是丑陋的,具有误导性的,并且似乎打破了第一个正常形式。

于 2013-05-29T23:18:15.267 回答