为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:V8
【操作系统】:win10
【CPU】:i5
【问题描述】*:从嵌入式oracle迁移到嵌入式达梦时,在预编译时,有一个函数(代码见下方),其中EXEC SQL INSERT INTO tmsgbox_abnormalloginctl(Account, AcctType, Sno, Pno, Cno) VALUES(:pstOnlineCustInfo->m_stAcctKey.m_szAccount, :aaa, "sd", "sd", "ds");会报错,如图。但是其中前面几句不会报错,怀疑是第一个参数是结构体中的变量引起的,不知道该怎么修改?
typedef struct _STAcctKey
{
char m_szAccount[20 + 1]; // 账号
char m_szAcctType[2 + 1]; // 账户类型
}STAcctKey, *PSTAcctKey;
typedef struct _STCustRoute
{
int m_iSno; // S端编号
int m_iPno; // P端编号
int m_iCno; // C端编号
}STCustRoute, *PSTCustRoute;
typedef struct _STOnlineCustInfo
{
STAcctKey m_stAcctKey;
int m_ucDNDStatus;
char m_szUseProductID[4 + 1];
char m_szUseProductVer[32];
char m_szLoginTime[32];
char m_szMAC[32];
char m_szIP[16];
STCustRoute m_stCustRoute;
}STOnlineCustInfo, *PSTOnlineCustInfo;
int msgboxdb_putabnacct(IN void* pContext, IN PSTOnlineCustInfo pstOnlineCustInfo)
{
DEFLOCSQLCA;
// 参数校验
if (!pContext || !pstOnlineCustInfo)
return RC_ERRPARAM;
EXEC SQL SELECT NAME, SEX FROM tmsgbox_abnormalloginctl WHERE PHONE = '1';
EXEC SQL INSERT INTO tmsgbox_abnormalloginctl(Account, AcctType, Sno, Pno, Cno) VALUES("aaa","asa", "sd", "sd", "ds");
char sss[2] = "a";
int aaa = 5;
EXEC SQL INSERT INTO tmsgbox_abnormalloginctl(Account, AcctType, Sno, Pno, Cno) VALUES(:sss, :aaa,"sd","sd","ds");
EXEC SQL INSERT INTO tmsgbox_abnormalloginctl(Account, AcctType, Sno, Pno, Cno) VALUES(:pstOnlineCustInfo->m_stAcctKey.m_szAccount, :aaa, "sd", "sd", "ds");
// 初始化
EXEC SQL CONTEXT USE : (sql_context)pContext;
//EXEC SQL INSERT INTO tmsgbox_abnormalloginctl(Account, AcctType, Sno, Pno, Cno)
// VALUES(:pstOnlineCustInfo->m_stAcctKey.m_szAccount, : pstOnlineCustInfo->m_stAcctKey.m_szAcctType,
// : pstOnlineCustInfo->m_stCustRoute.m_iSno, : pstOnlineCustInfo->m_stCustRoute.m_iPno, : pstOnlineCustInfo->m_stCustRoute.m_iCno);
if (SQL_IS_DUPKEY)
{
return 0;
}
return SQL_CODE;
}
解决了吗?求解决方法