关于Qt调用sqlsever存储结构

在使用Qt调用SqlSever存储过程中,输出参数并未被接收。

img

SqlSever存储过程部分代码:


```sql
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[wuyefei]
    @startDate smalldatetime,@endDate smalldatetime,@YinJiaoMoney int output,@ShiJiaoMoney int output,@WeiJiaoMoney int output
AS
    SELECT @YinJiaoMoney = SUM(Pay_Wuyemoney)
    FROM WuYePayMoney
    WHERE Year_month between @startDate AND @endDate
    SELECT @ShiJiaoMoney = SUM(Pay_Wuyemoney)
    FROM WuYePayMoney
    WHERE if_pay = '是' AND Year_month between @startDate AND @endDate
    SELECT @WeiJiaoMoney = SUM(Pay_Wuyemoney)
    FROM WuYePayMoney
    WHERE if_pay = '否' AND Year_month between @startDate AND @endDate


Qt部分代码:
```c++

QDateTime starttime,endtime;
    starttime = ui->dateEdit->dateTime();
    endtime = ui->dateEdit_2->dateTime();
    if(starttime>=endtime)
    {
        QString str = "起始时间必须小于结束时间!";
        ui -> listWidget ->addItem(str);
    }
    else
    {
        QSqlQuery query;
        query.prepare("exec wuyefei :startDate,:endDate,:YinJiaoMoney,:ShiJiaoMoney,:WeiJiaoMoney");
        query.bindValue(":startDate",starttime);
        query.bindValue(":endDate",endtime);
        query.bindValue(":YinJiaoMoney",0);
        query.bindValue(":ShiJiaoMoney",0);
        query.bindValue(":WeiJiaoMoney",0);
        query.exec();

        QString str,str0,str1,str2,str3,str4;
        query.next();
        str0 = query.boundValue(0).toString();
        str1 = query.boundValue(1).toString();
        str2 = query.boundValue(2).toString();
        str3 = query.boundValue(3).toString();
        str4 = query.boundValue(4).toString();

        str = "从"+str0+"到"+str1+", "+"应交物业费"+str2+"元。已交物业费为:"+str3+"元。未交物业费为:"+str4+"元。";
        ui -> listWidget ->addItem(str);
    }