Hi,
I create a dummy project to simulate the problem. The following are the dummy stored procedure and table:
Code: Select all
CREATE PROCEDURE `sp_GenerateTransactionID`(IN CommandID DECIMAL(4), OUT TransactionID INTEGER(11))
BEGIN
INSERT INTO CREWMAIL_TRANSACTION(CT_ID, CT_CC_ID) VALUES(1, CommandID);
SELECT LAST_INSERT_ID() INTO TransactionID;
END;
Code: Select all
CREATE TABLE `crewmail_transaction` (
`CT_ID` int(10) unsigned NOT NULL,
`CT_CC_ID` decimal(4,0) NOT NULL
) ;
And these are the c++ code:
Code: Select all
TSQLConnection *sqlCon = new TSQLConnection(NULL);
sqlCon->DriverName = AnsiString("dbxmysql");
sqlCon->GetDriverFunc = AnsiString("getSQLDriverMySQL");
sqlCon->VendorLib = AnsiString("libmysql.dll");
sqlCon->LibraryName = AnsiString("dbexpmda.dll");
sqlCon->KeepConnection = true;
sqlCon->LoadParamsOnConnect = false;
sqlCon->LoginPrompt = false;
sqlCon->ConnectionName = "MySQLConnection";
sqlCon->Params->Clear();
sqlCon->Params->Add(AnsiString("HostName=10.97.6.218"));
sqlCon->Params->Add(AnsiString("USER_NAME=root"));
sqlCon->Params->Add(AnsiString("PASSWORD=marlinksecret"));
sqlCon->Params->Add(AnsiString("Database=new_db"));
sqlCon->Open();
int iTransactionID = 0;
int iCommandType = 1;
TParam *prmTransactionID;
TParam *prmCommandType;
TSQLStoredProc *sp = new TSQLStoredProc(NULL);
sp->StoredProcName = "sp_GenerateTransactionID";
sp->ParamCheck = true;
sp->Params->Clear();
prmCommandType = sp->Params->CreateParam(ftInteger, "CommandID", ptInput);
prmTransactionID = sp->Params->CreateParam(ftInteger, "TransactionID", ptOutput);
prmCommandType->AsInteger = iCommandType;
sp->SQLConnection = sqlCon;
sp->Prepared = true;
sp->ExecProc();
Hope this is help. Thanks for the reply.