请高手帮我看看,我写的存储过程有什么问题,为什么总是得不到值啊。我想通过调用存储过程得到@BH的值
存储过程:
create procedure procddd
@BH char(10) OUTPUT
AS
declare @BH1 char(10)
declare @TODAY char(6)
begin
select @TODAY=right(convert(char(8),getdate(),112),6)
select @BH1=BH from SEED
if @BH1 is null or left(@BH1,6)<>@TODAY
begin
select @BH1=@TODAY+'0000'
end
select @BH1=left(@BH1,6)+right('0000' + ltrim(convert(char(4),convert(int,right(@BH1,4)))+1),4)
update seed set BH=@BH1
SET @BH=@BH1
return @BH
end调用程序:import java.util.*;
public class Hello {
public static void main(String[] args)throws Exception {
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
System.out.println("成功连接");
Connection con=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev","bn","bn");
java.sql.CallableStatement sqlstmt=con.prepareCall("{?=call procddd()}");
sqlstmt.registerOutParameter(1, java.sql.Types.CHAR);//注册输出参数
String str= sqlstmt.getString(1);//获取输出值 }catch(Exception e)
{e.printStackTrace();
}
}
}下面是程序报的错误:
java.sql.SQLException: [Microsoft][SQLServer JDBC Driver]The requested data is not available.
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseData.convert(Unknown Source)
at com.microsoft.jdbc.base.BaseData.getData(Unknown Source)
at com.microsoft.jdbc.base.BaseCallableStatement.getString(Unknown Source)
at Hello.main(Hello.java:12)
试下行不行
这样写也是不行。注册两个参数也不行啊。郁闷ing
加一句话sqlstmt.execute();
sqlstmt.registerOutParameter(1, java.sql.Types.CHAR);//注册输出参数
sqlstmt.registerOutParameter(2, java.sql.Types.CHAR);//注册输出参数
sqlstmt.execute();
String str= sqlstmt.getString(1);//获取输出值