• 3754阅读
  • 0回复

[提问]QT调用SQL Server存储过程无法得到超过4字节的值 [复制链接]

上一主题 下一主题
在线realfan
 

只看楼主 倒序阅读 楼主  发表于: 2012-11-26
QT中通过ODBC连接SQL Server数据库,调用数据中的存储过程,
存储过程如下


C++ Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30


ALTER PROCEDURE [dbo].[GetBasicTypeID]
    @CellID NVARCHAR(20),            -- cell ID
    @TypeName NVARCHAR(40) OUTPUT    -- type name
    
    
    
QSqlQuery *pQry = ......
pQry->clear();
pQry->prepare("exec GetBasicTypeID  ?, ? output");
QString str = "A236687";
pQry->bindValue(0, str);
pQry->bindValue(1, 0, QSql::Out);
bool bFlag = pQry->exec();

QVariant var = pQry->boundValue(1);
QString strResult = var.toString();
发现strResult不是预期值

如果存储过程返回字段是整数,可以正常返回
ALTER PROCEDURE [dbo].[GetBasicTypeID_Test_Int]
    @CellID NVARCHAR(20),            -- cell ID
    @TypeName INT OUTPUT    -- type name
    
QVariant var = pQry->boundValue(1);
int iResult = var.toInt();
后来还试了double类型,发现如果数值不超过int范围,能正确得到值,超过了,就不对了。
也试了qlonglong,发现也一样,不超过int范围,能正确得到值,超过了,就不对了。
就是返回值超过4字节,就不对。

没有哪位高人知道原因,能否解决这个问题
快速回复
限100 字节
 
上一个 下一个