SQLBindParameter i C++
Jeg tester op imod Northwind(inden jeg vil bruge min query i produktion!!) databasen der ligger i MS SQL, her kan jeg ikke få min SQLBindParameter til at fungere.Hvis jeg gør følgende "EXEC CustOrdersDetail 10248" fungere det uden problemer og jeg kan hente mine rækker
Min SQLExecute returnere altid 99... hvad gør jeg forkert?
Reelt ville jeg gerne bruge en query der ser ud som følgenede:
"EXEC ?= CustOrdersDetail ?", men vil gerne have "EXEC CustOrdersDetail ?" til at fungere først!!
BOOL valueToReturn(FALSE);
struct {
SQLINTEGER retVal;
SQLINTEGER orderId;
SQLINTEGER retValLength;
SQLINTEGER orderIdLength;
//Return values
SQLCHAR name[128];
SQLDOUBLE unitPrice;
SQLINTEGER quantity;
SQLINTEGER discount;
SQLDOUBLE extPrice;
SQLINTEGER nameLength;
SQLINTEGER unitPriceLength;
SQLINTEGER quantityLength;
SQLINTEGER discountLength;
SQLINTEGER extPriceLength;
} row;
string str = "EXEC CustOrdersDetail ?";
row.orderId = 10248;
m_sr = SQLPrepare(m_stmtHandle, (UCHAR*)str.c_str() , SQL_NTS);
if (m_sr == SQL_SUCCESS || m_sr == SQL_SUCCESS_WITH_INFO)
{
//m_sr = SQLBindParameter(m_stmtHandle, 1, SQL_PARAM_OUTPUT, SQL_C_SSHORT, SQL_INTEGER, 0, 0, &row.retVal, 0, &row.retValLength);
m_sr = SQLBindParameter(m_stmtHandle, 1, SQL_PARAM_INPUT_OUTPUT, SQL_C_LONG, SQL_INTEGER, sizeof(row.orderId), 0, &row.orderId, sizeof(row.orderId), &row.orderIdLength);
}
m_sr = SQLBindCol(m_stmtHandle, 1, SQL_C_CHAR, row.name, sizeof(row.name), &row.nameLength);
if(m_sr != SQL_SUCCESS && m_sr != SQL_SUCCESS_WITH_INFO)
return valueToReturn;
...
...
m_sr = SQLExecute(m_stmtHandle);
if(m_sr != SQL_SUCCESS && m_sr != SQL_SUCCESS_WITH_INFO)
return valueToReturn;
// Start fetching records
while (SQLFetch(m_stmtHandle) == SQL_SUCCESS) {
valueToReturn = TRUE;
}