调用存储过程

时间:2013-05-29 23:11:17

标签: java stored-procedures sybase callable-statement

我的时区晚安。

我正在使用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'''

它运行没有任何问题,所以我想我猜的字符逃逸存在一些问题。

有人遇到过这个问题吗?

致以最诚挚的问候

提前致谢

1 个答案:

答案 0 :(得分:0)

您没有指定IN和OUT参数:

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

看看教程是否有帮助。

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