I have this stored procedure
create proc getVersion(@appCode nvarchar(128), @serialNo nvarchar(128))
as
select v.Version from Version v
inner join Application a on a.Code = v.AppCode
inner join SerialNumber s on a.Code = s.AppCode
where a.Code = @appCode and s.SerialNo = @serialNo
This procedure has to return a result set. I call it in qt like this:
QStringList DBConnection::getQueryResult(QString code, QString serialNo){
connect();
QSqlQuery query;
QStringList results;
query.prepare("CALL getVersion(?,?)");
query.bindValue(1,code);
query.bindValue(2,serialNo);
query.exec();
while(query.next()){
QString result = query.record().value(1).toString();
results.append(result);
}
for(QString res:results){
qDebug() << res;
}
closeConnection();
return results;
}
But i get the the following error: Incorrect syntax error near '@P1'. SQL Server Statement could not be prepared.
Which is the proper way to call a stored procedure with 2 input parameters in Qt?
EDIT:
I created a FUNCTION which will return a table with the matching data.
create function getAppVersions
(
@appCode nvarchar(128),
@serialNo nvarchar(128))
returns table as
return (
select v.Version from Version v
inner join Application a on a.Code = v.AppCode
inner join SerialNumber s on a.Code = s.AppCode
where a.Code = @appCode and s.SerialNo = @serialNo)
I can't figure how to call this function using QSqlQuery.
The problem was solved like this:
I created function:
create function getAppVersions
(
@appCode nvarchar(128),
@serialNo nvarchar(128))
returns table as
return (
select v.Version from Version v
inner join Application a on a.Code = v.AppCode
inner join SerialNumber s on a.Code = s.AppCode
where a.Code = @appCode and s.SerialNo = @serialNo
)
And call that function in Qt like this:
QStringList DBConnection::getQueryResult(QString code, QString serialNo){
QSqlQuery query;
QStringList results;
QString connectionString = connection.arg(serverName).arg(dbName);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(connectionString);
if (db.open())
{
qDebug() << "Opened";
query = db.exec("Select *from getAppVersions('" + code + "','" + serialNo + "');");
while(query.next()){
QString result = query.record().value(0).toString();
results.append(result);
}
db.close();
}
else
{
qDebug() << "Error = " << db.lastError().text();
}
db.close();
return results;
}
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments