String sql = "{call sp_getdjbh(?,?,?)}";
改成:
String sql = "{? = call sp_getdjbh(?,?)}";顺序相应的调整一下试试看。

解决方案 »

  1.   

    takecare(大厅):
        你的方法不行的,我要的返回的djbh的值 就是定义的那个参数@djbh OUTPUT
      

  2.   

    呵呵,是的。那个只能返回sp的return。
      

  3.   

    java代码应该没有什么问题,应该还是sp的问题。
    你确信sp对吗?
    我表示怀疑:
    CREATE PROCEDURE [dbo].[sp_getdjbh]
       @djlx  varchar(16), 
       @ymd varchar(6) ,   
       @djbh varchar(16) OUTPUT,
                             ^^^^
    AS 
    .......
      

  4.   

    正确的存储过程是这样的
    CREATE PROCEDURE [dbo].[sp_getdjbh]
       @djlx  varchar(16), 
       @ymd varchar(6) ,   
       @djbh varchar(16) OUTPUT
    AS   
      declare @xh     int      
      declare @cnt   int 
      select @cnt =  (  select count(*)   from a_xh   where djlx=@djlx and ymd = @ymd  )
      if @cnt = 0 ---如果没有
         begin
            insert into a_xh   values(@djlx,@ymd,1)    
            select @xh =1 
            select @djbh =  @djlx + @ymd +  right(10000+ @xh,4)
         end
      else
         begin   
           select @xh = (   select xh    from   a_xh    where djlx=@djlx and ymd= @ymd )
           select @xh = @xh + 1
           select @djbh = @djlx + @ymd + right(10000+ @xh,4)
           update a_xh set xh = @xh
        end
    GO
      

  5.   

    不懂
    这个是什么里面的procedure?
    这个procedure不用return返回值,那么它的值是在哪儿返回的?
      

  6.   

    问题已经解决,我开始用的数据库驱动程序是jtds的,后来换成weblogic的就好了