在Qt5.4中调用 sql server 2008 的存储过程如何获取返回值

来源:互联网 发布:首都经济贸易大学 知乎 编辑:程序博客网 时间:2024/06/05 00:59

首先我参考了http://m.blog.csdn.net/blog/wey123456789/38902309

参照上面的博客终于读到了存储过程的返回值

bool sql_insert_Customer(Customer &Cus){    QSqlQuery query(db);    int s;    query.prepare("exec ? = proc_insert_Customer ?,?,?,?,?,?");    query.bindValue(0,1,QSql::Out);//!!!    query.bindValue(1,Cus.CusNo);    query.bindValue(2,Cus.CusPassword);    query.bindValue(3,Cus.CusName);    query.bindValue(4,Cus.CusSex);    query.bindValue(5,Cus.CusPhone);    query.bindValue(6,Cus.CusCompany);    query.exec();    s = query.boundValue(0).toInt();    return s;}


刚开始写成了query.bindValue(0,QSql::Out),半天没弄出来,找了很久才找到错误。

不过后来我在读取另一个存储过程的返回值的时候又发现了一点问题。

下面是我存储过程的代码:

USE [taxi]GO/****** Object:  StoredProcedure [dbo].[proc_insert_Record]    Script Date: 06/22/2015 13:49:11 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER proc [dbo].[proc_insert_Record]@CarNo char(10),@CusNo char(20),@ReNo char(18) outputasdeclare @RecordNo char(18)if(not exists (select *from Table_Record where RecordNo = @RecordNo))beginselect @RecordNo = replace('D'  +str(year(getdate()),4)--年  +str(month(getdate()),2)--月  +str(day(getdate()),2)--日  +str((select count(*) from Table_Record)+1,9)--流水号  ,' ','0')insert into Table_Recordvalues(@RecordNo,@CarNo,@CusNo,GETDATE(),NULL,NULL)set @ReNo = @RecordNoend

我需要读取的是一个char(18)的类型的数据,

错误代码:

        query.prepare("exec proc_insert_Record ?,?,? output");        query.bindValue(0,CarNo);        query.bindValue(1,id);        query.bindValue(2,"",QSql::Out);//一定要和数据库的的类型相同 我这里数据库是char(18),那么就要指定18位字符串才能读出来        query.exec();        RecordNo = query.boundValue(2).toString();

正确代码:

        query.prepare("exec proc_insert_Record ?,?,? output");        query.bindValue(0,CarNo);        query.bindValue(1,id);        query.bindValue(2,"D20150622000000000",QSql::Out);//一定要和数据库的的类型相同 我这里数据库是char(18),那么就要指定18位字符串才能读出来        query.exec();        RecordNo = query.boundValue(2).toString();


我注释的地方一定要注意,如果传过去字符串没有18位是读不到完整的数据的!!

数据库实训好蛋疼~~

0 0
原创粉丝点击