如题

解决方案 »

  1.   

    和不加output的参数一起为1024个,如果没有其它参数最多就是1024
      

  2.   

    c = conn.prepareCall("{call sp_YG_StatEmRtrRelationMedFare(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}");
    c.setString(1,"7AE0A3FB-2D6C-4E51-8B10-71EAFA2D269F");  //设置非output型的参数的值
    for(int i=2;i<24;i++){
        c.registerOutParameter(i,Types.FLOAT);
    }错误:
    [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]为过程或函数 sp_YG_StatEmRtrRelationMedFare 指定的参数太多。
    我数了几遍,存储过程里面和?都是23个啊!
      

  3.   

    alter proc sp_YG_StatOntheJobEmRtrRelationMedFare
    @unitID uniqueidentifier,
    @planSum float output,
    @planSum2 float output,
    @actualSum float output,
    @actualSum2 float output,
    @peopleSum int output,
    @peopleSum2 int output,
    @clinicSum float output,
    @clinicSum2 float output,
    @avgClinicSum float output,
    @avgClinicSum2 float output,
    @inhpSum float output,
    @inhpSum2 float output,
    @inhpPeopleSum int output,
    @inhpPeopleSum2 int output,
    @tlbPeopleSum int output,
    @tlbPeopleSum2 int output,
    @tlbClinicSum float output,
    @tlbClinicSum2 float output,
    @tlbInhpSum float output,
    @tlbInhpSum2 float output,
    @tlbTotal float output,
    @tlbTotal2 float outputas
      

  4.   


    传入参数的数量大于存储过程的参数数量如:create proc P(@ID int output)
    as
    set @ID=2
    godeclare @i int,@i2 int
    exec p @i output,@i output/*
    消息 8144,级别 16,状态 2,过程 P,第 0 行
    为过程或函数 P 指定了过多的参数。
    */
      

  5.   

    刚才掉线,是中国风说的,我是在一本书上看到的,超过23肯定没有问题,是你用java调用时出了问题,
    sql中调用时输出参数要加output,你那个不要?不要也不应该报错,只是没有输出值,java不会
      

  6.   

    sp_YG_StatEmRtrRelationMedFare 指定的参数太多
    --------
    是说你传入的值的个数大于你的参数个数,
    而不是存储过程的参数限制.
    如果你的存储过程有23个参数, 而你程序端传了24个值来,
    那么就会出现这个问题.
    检查你程序端传过来的参数个数是否对应.
    例子风已经给出来了,