我有一个存储过程,它会删除数据库中特定表的索引。从数据库控制台执行时,此SP可正常运行而无错误。
当我使用JDBC使用Callable语句执行SP时,它会给出一个SQL异常,并说索引不能被删除。
在数据库上检查时,索引也会被删除。
CREATE PROCEDURE sp_drop_idx as
BEGIN
DROP INDEX sp_close_1.XPKusr1
DROP INDEX sp_close_1.ilxuser22
DROP INDEX sp_close_1.indx_billid1
DROP INDEX sp_close_1.cycle_ind
END
GO
在另一个SP中调用此SP,让我们使用普通的JDBC调用从java代码中调用 outerSP 。
cb = conn.prepareCall("{call outerSP}");
s = cb.executeQuery();
while(rs.next()){
num = (Integer)rs.getInt(1);
}
答案 0 :(得分:0)
这是SP中的一个简单改变:
对于我们使用IF条件的每个索引 -
IF EXISTS(select * from sysindexes where id = object_id('sp_close_1') and name ='XPKusr1')
DROP INDEX sp_close_1.XPKusr1