部分程序代码如下:1>.其中参数pParam_CoilNo中传递的值最后由空格。而且我执行pRs->Execute(&pCmd)调用存储过程后,
通过pParam_CoilNo.GetVale(szPrintCoil); 获取szPrintCoil值依然是有"123456789 "的。可是为什么在存储过程中,空格怎么就没有了呢?
2>.更奇怪的是,我在Toad中调用此存储过程:
declare
alrmmsg varchar2(500);
user_data varchar2(4000);
begin
Transfer.Transfer_AllInst_1220_Msg_Mk('123456789 ','C472','L9E0004230','ALL',1,alrmmsg,user_data);
DBMS_OUTPUT.PUT_LINE('Alarm:'||alrmmsg);
end;
存储过程中显示是有空格的。
3>.ADO方式调用后台存储过程代码如下:
{
CString szAlarmMsg=_T("");
CString szTemp=_T("0");
CString szPrintCoil=_T("");
CADOParameter pParam_CoilNo(CADORecordset::typeVarChar, sizeof(char) * 10);
CADOParameter pParam_ProcessCode(CADORecordset::typeVarChar, sizeof(char) * 4);
CADOParameter pParam_OrderNo(CADORecordset::typeVarChar, sizeof(char) * 10);
CADOParameter pParam_SampleType(CADORecordset::typeVarChar, sizeof(char) * 5);
CADOParameter pParam_Position(CADORecordset::typeVarChar, sizeof(char)*3);
CADOParameter pParam_TestTimes(CADORecordset::typeVarChar, sizeof(char));
CADOParameter pParam_Alrmmsg(CADORecordset::typeVarChar, sizeof(char) * 100,CADOParameter::paramOutput);
m_selectedCoil = _T("123456789 ");
pParam_CoilNo.SetValue(m_selectedCoil);
pParam_ProcessCode.SetValue(m_selectedProcessCode);
pParam_OrderNo.SetValue(m_selectedContractNo);
pParam_SampleType.SetValue(m_SampleType);
pParam_Position.SetValue(m_selectedSamplePosition);
pParam_TestTimes.SetValue(szTemp); CADOCommand pCmd(&LabDB, "CLENGZHA.TRANSFER.Transfer_AllInst_1220_Msg_Mk");
pCmd.AddParameter(&pParam_CoilNo);
pCmd.AddParameter(&pParam_ProcessCode);
pCmd.AddParameter(&pParam_OrderNo);
pCmd.AddParameter(&pParam_SampleType);
pCmd.AddParameter(&pParam_Position);
pCmd.AddParameter(&pParam_TestTimes);
pCmd.AddParameter(&pParam_Alrmmsg);
CADORecordset* pRs = new CADORecordset(&LabDB);
if(pRs->Execute(&pCmd))
{
pParam_Alrmmsg.GetValue(szAlarmMsg);
pParam_CoilNo.GetVale(szPrintCoil); /*此处发现传递的参数包含空格*/
}
delete pRs;
szAlarmMsg.TrimLeft();
szAlarmMsg.TrimRight();
if(szAlarmMsg!=_T("")){
AfxMessageBox("存储过程调用失败!失败原因可能是:" + szAlarmMsg + "!");
LabDB.RollbackTransaction();
return;
}
}
通过pParam_CoilNo.GetVale(szPrintCoil); 获取szPrintCoil值依然是有"123456789 "的。可是为什么在存储过程中,空格怎么就没有了呢?
2>.更奇怪的是,我在Toad中调用此存储过程:
declare
alrmmsg varchar2(500);
user_data varchar2(4000);
begin
Transfer.Transfer_AllInst_1220_Msg_Mk('123456789 ','C472','L9E0004230','ALL',1,alrmmsg,user_data);
DBMS_OUTPUT.PUT_LINE('Alarm:'||alrmmsg);
end;
存储过程中显示是有空格的。
3>.ADO方式调用后台存储过程代码如下:
{
CString szAlarmMsg=_T("");
CString szTemp=_T("0");
CString szPrintCoil=_T("");
CADOParameter pParam_CoilNo(CADORecordset::typeVarChar, sizeof(char) * 10);
CADOParameter pParam_ProcessCode(CADORecordset::typeVarChar, sizeof(char) * 4);
CADOParameter pParam_OrderNo(CADORecordset::typeVarChar, sizeof(char) * 10);
CADOParameter pParam_SampleType(CADORecordset::typeVarChar, sizeof(char) * 5);
CADOParameter pParam_Position(CADORecordset::typeVarChar, sizeof(char)*3);
CADOParameter pParam_TestTimes(CADORecordset::typeVarChar, sizeof(char));
CADOParameter pParam_Alrmmsg(CADORecordset::typeVarChar, sizeof(char) * 100,CADOParameter::paramOutput);
m_selectedCoil = _T("123456789 ");
pParam_CoilNo.SetValue(m_selectedCoil);
pParam_ProcessCode.SetValue(m_selectedProcessCode);
pParam_OrderNo.SetValue(m_selectedContractNo);
pParam_SampleType.SetValue(m_SampleType);
pParam_Position.SetValue(m_selectedSamplePosition);
pParam_TestTimes.SetValue(szTemp); CADOCommand pCmd(&LabDB, "CLENGZHA.TRANSFER.Transfer_AllInst_1220_Msg_Mk");
pCmd.AddParameter(&pParam_CoilNo);
pCmd.AddParameter(&pParam_ProcessCode);
pCmd.AddParameter(&pParam_OrderNo);
pCmd.AddParameter(&pParam_SampleType);
pCmd.AddParameter(&pParam_Position);
pCmd.AddParameter(&pParam_TestTimes);
pCmd.AddParameter(&pParam_Alrmmsg);
CADORecordset* pRs = new CADORecordset(&LabDB);
if(pRs->Execute(&pCmd))
{
pParam_Alrmmsg.GetValue(szAlarmMsg);
pParam_CoilNo.GetVale(szPrintCoil); /*此处发现传递的参数包含空格*/
}
delete pRs;
szAlarmMsg.TrimLeft();
szAlarmMsg.TrimRight();
if(szAlarmMsg!=_T("")){
AfxMessageBox("存储过程调用失败!失败原因可能是:" + szAlarmMsg + "!");
LabDB.RollbackTransaction();
return;
}
}
解决方案 »
- win7安oracle10但sqlplus运行一会后自动关闭,数据库已连接(Q1935581890
- 求助,如何并发执行一个表中每一行的数据呢?
- 如何判断数组中是否存在重复的值?
- rac是否支持2台机器互相备份
- 大数据表备份方案求教
- [急!!!]高分求SQL语句,内详,高手请进,谢谢!
- 怎样从Oracle一张表中根据时间选择出最近的50条记录
- 关于时间查询转换报错
- oracle 中返回指定行的,刚插入行,最后修改行的数据的sql语句怎么写?帮帮忙!
- sql能不能在选出的数据中随机选取n个出来?
- 分析 函数??
- 谁有10204_vista_w2k8_x64_production_client.zip?
空格是自动截取的,oracle内部认为这是不必要的,所以自动trim掉!