我的时区晚安。
我正在使用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'''
它运行没有任何问题,所以我想我猜的字符逃逸存在一些问题。
有人遇到过这个问题吗?
致以最诚挚的问候
提前致谢
答案 0 :(得分:0)
您没有指定IN和OUT参数:
http://docs.oracle.com/javase/tutorial/jdbc/basics/storedprocedures.html
看看教程是否有帮助。
我还会评论您只有两个参数,但您的查询会传入看似更多的字符串。这是丑陋的,误导性的,似乎打破了第一种正常形式。