存储过程:
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
java程序:
java.sql.CallableStatement sqlstmt=con.prepareCall("{?=call procdd()}");
    sqlstmt.registerOutParameter(1, java.sql.Types.CHAR);//注册输出参数
    String str= sqlstmt.getString(1);

解决方案 »

  1.   

    不是所有的数据库都支持存储过程的
    mysql5以前的版本好像都不支持的
      

  2.   

    // Call a procedure with one OUT parameter
            cs = connection.prepareCall("{call myprocout(?)}");
        
            // Register the type of the OUT parameter
            cs.registerOutParameter(1, Types.VARCHAR);
        
            // Execute the stored procedure and retrieve the OUT value
            cs.execute();
            String outParam = cs.getString(1);     // OUT parameter