Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 调用存储过程_Java_Stored Procedures_Sybase_Callable Statement - Fatal编程技术网

Java 调用存储过程

Java 调用存储过程,java,stored-procedures,sybase,callable-statement,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(?,

晚安,在我的时区

我使用的是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'''
它运行没有任何问题,所以我猜角色转义可能有问题

有人遇到过这个问题吗

致以最良好的问候


提前感谢

您没有指定输入和输出参数:

看看下面的教程是否有帮助


我还要指出的是,您只有两个参数,但您的查询传递的字符串似乎更多。它丑陋、误导,似乎打破了第一个正常形式。

虽然在第一个参数中我只使用integer,但事实上在数据库中它们的定义类似于VARCHAR,这就是我用引号传递的原因