CREATE PROCEDURE dbo.SP_SetCoursePlan @SYSDM varchar(2), @XKDM varchar(8), @SYMC varchar(50), @SYRQ DATETIME, @SYZC TINYINT, @SYJC char(1), @SYSCX varchar(10), @KXRS TINYINT, @MZRS TINYINT, @SXRS TINYINT, @RESU TINYINT=1 OUTPUT AS DECLARE @maxRs TINYINT IF EXISTS(SELECT ID FROM CoursePlan WHERE SYSDM=@SYSDM AND SYRQ=@SYRQ AND SYJC=@SYJC) SET @RESU=0 ELSE BEGIN SELECT @maxRs=MAX(SXRS) FROM CoursePlan INSERT INTO CoursePlan(SYSDM,XKDM,SYMC,SYRQ,SYZC,SYJC,SYSCX,KXRS,MZRS,SXRS) VALUES(@SYSDM,@XKDM,@SYMC,@SYRQ,@SYZC,@SYJC,@SYSCX,@KXRS,@MZRS,@maxRs+1) SET @RESU=1 END SELECT @RESU 然后直接调用就可以了GO
@SYSDM varchar(2),
@XKDM varchar(8),
@SYMC varchar(50),
@SYRQ DATETIME,
@SYZC TINYINT,
@SYJC char(1),
@SYSCX varchar(10),
@KXRS TINYINT,
@MZRS TINYINT,
@SXRS TINYINT,
@RESU TINYINT=1 OUTPUT
AS
DECLARE @maxRs TINYINT
IF EXISTS(SELECT ID FROM CoursePlan WHERE SYSDM=@SYSDM AND SYRQ=@SYRQ AND SYJC=@SYJC)
SET @RESU=0
ELSE
BEGIN
SELECT @maxRs=MAX(SXRS) FROM CoursePlan
INSERT INTO CoursePlan(SYSDM,XKDM,SYMC,SYRQ,SYZC,SYJC,SYSCX,KXRS,MZRS,SXRS)
VALUES(@SYSDM,@XKDM,@SYMC,@SYRQ,@SYZC,@SYJC,@SYSCX,@KXRS,@MZRS,@maxRs+1)
SET @RESU=1
END
SELECT @RESU
然后直接调用就可以了GO
cst.registerOutParameter(11,java.sql.Types.TINYINT);
改为
cst.registerOutParameter(1,java.sql.Types.TINYINT);//表示你用来传回的地一个参数
out.println(cst.getByte(1));//这样才对的
cst.getByte(1));//表示获得传回的地一个参数值
其他的依次类推,只是你要注意数据类型,java和jdbc中的不同。
CallableStatement cst = conn.prepareCall("{call 用于查询的存储过程}");
.........//你自己的程序.和上面很相似的。
rs=cst.executeQuery();//执行,rs已经取得了结果集。可以正常操作了
while(rs.next()){
......
}
rs.close();
..........
你能给我个离子吗?谢谢!
我用我上面的存储过程,按照你那样的方法rs=cst.executeQuery();
服务器提示No ResultSet set was produced?我觉得是不是存储过程返回的对象应该是个Cursor才对?具体应该怎么写,请给个例子。
谢谢指教!解决就给分!
这样执行后rs就会获得
你的整个存储过程都没有select的东西
CREATE PROCEDURE CC
AS
DECLARE @ID INT
SELECT @ID = 1
SELECT @ID
这么简单的一个存储过程
你调用EXEC CC
就可以返回ID到rs中去了
搞不懂你想要什么
取得返回值你应该会做了吧,就上面的那个,肯定对的,我给你两个我自己写的源程序看看,跟上面有点改变。
..........//源程序剪辑。下面是用于取回返回参数
stmt=Conn.prepareCall("{call myaddgroupinfo('"+array[j-1]+"','"+dd+"','"+GNo+"','"+array[j-1]+"','"+TNo+"','"+place+"',?)}");
stmt.registerOutParameter(1,java.sql.Types.VARCHAR);
stmt.executeUpdate();
Message= stmt.getString(1);//取得记录集。这是我的BEAN中封装的方法,我这里用了Statement,CallableStatement应该也行的,另外你可以看看PreparedStatement这个也是用于调用存储过程的,也可以,方法很多的
public ResultSet getRs(char t)
.......//这才是你要的
stmt=Conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs=stmt.executeQuery("{call myseltitleinfo()}");
return rs;
}上面是我用的好的,如果你还不成功,老兄,你只好看看JDK帮助了,我就是看它,做好的。