I use the driver QODBC to connect to the database MS SQL Server. I execute a stored procedure. The stored procedure returns values through parameters. stored procedure always returns the empty string for parameters of type QString.
For example:
alter procedure [dbo].[fp_test]
( @Name varchar(50),
@Value varchar(50) out,
@Number int out
)
as
set nocount on
Select @Value='test', @Number=123
alter procedure [dbo].[fp_test]
( @Name varchar(50),
@Value varchar(50) out,
@Number int out
)
as
set nocount on
Select @Value='test', @Number=123
To copy to clipboard, switch view to plain text mode
//query.setForwardOnly(true);
query.prepare("{CALL fp_test(?,?,?)}");
query.addBindValue(strName);
query.addBindValue(strValue,QSql::Out);
query.addBindValue(n,QSql::Out);
if (!query.exec())
return 1;
}
strValue = query.boundValue(1).toString(); // "" :confused: - must be "test"
n = query.boundValue(2).toInt();; // 123 - ok
QSqlQuery query;
//query.setForwardOnly(true);
query.prepare("{CALL fp_test(?,?,?)}");
query.addBindValue(strName);
query.addBindValue(strValue,QSql::Out);
query.addBindValue(n,QSql::Out);
if (!query.exec())
{ QMessageBox::information(0, QObject::tr("Error"), "Error");
return 1;
}
strValue = query.boundValue(1).toString(); // "" :confused: - must be "test"
n = query.boundValue(2).toInt();; // 123 - ok
To copy to clipboard, switch view to plain text mode
Bookmarks