1、// callOmronproduce.cpp : Defines the entry point for the console application.
// VC++控制存储过程
#include "stdafx.h"
#include
2、) using namespace std; //获得系统日期 long getSystemDate() { time_t timer; time(&timer); tm* t_tm = localtime(&timer); int sysyear = t_tm->tm_year+1900; int sysmonth = t_tm->tm_mon+1; int sysday = t_tm->tm_mday; int sysminiute = t_tm->tm_min; int syssecond = t_tm->tm_sec; long
3、date; date = sysyear*10000+sysmonth*100+sysday; return date; } ///调用omron_edw存储过程 string Call_Omron_edw_Produce(long sysdate) { //初始化COM库(调用msado15.dll为COM库调用方式) ::CoInitialize(NULL); string temp; try { //初始化ADO三个基本接口; _CommandPtr m_pCmd; _RecordsetPtr m_pRecor
4、dset; _ConnectionPtr m_pConnection; // 设置连接字符串,为是BSTR型或者_bstr_t类型 _bstr_t strConnect,bstrSQL; //连接字符串说明:Provider表示驱动引擎;Data Source表示数据库文件名及其完整路径; strConnect= "Provider=OraOLEDB.ORACLE.1;Persist Security Info=TRUE;Data Source=10.110.50.103/RELEASE;User ID=OMRON_EDW;Password=OMRON_
5、EDW;"; //strConnect= "Provider=MSDAORA;Persist Security Info=TRUE;Data Source=10.110.50.103/RELEASE;User ID=OMRON_EDW;Password=OMRON_EDW;"; // 创建Connection对象 // 利用_ConnectionPtr这个智能指针构造对象pConn,调用其中的Connection定义 m_pConnection.CreateInstance(__uuidof(Connection)); // 创建记录集对象 m_
6、pRecordset.CreateInstance(__uuidof(Recordset)); // 创建CommandPtr对象 m_pCmd.CreateInstance(__uuidof(Command)); m_pConnection->CursorLocation = adUseClient; m_pConnection->Mode = adModeReadWrite; m_pConnection->ConnectionTimeout = 3; m_pConnection->CommandTimeout = 3; m_pConn
7、ection->ConnectionString = strConnect; //打开数据库连接 //连接字符串说明:Provider表示驱动引擎;User ID表示用户名;Password表示口令;Initial Catalog表示数据库名 m_pConnection->Open(strConnect,"OMRON_EDW","OMRON_EDW",adModeUnknown); if(m_pConnection==NULL) cerr<<"Lind data ERROR!\n"; else { cout <<"E
8、DW数据库连接成功"<
9、eParameter(_bstr_t("O_RUNSTATUS"),adVarChar,adParamOutput,60); lPara1->Value=_bstr_t(" "); m_pCmd->Parameters->Append(lPara1); m_pCmd->CommandText=_bstr_t("BATCH_EDW_CTL_DAILY"); ///需要使用的ADO连接 m_pCmd->CommandType=adCmdStoredProc; m_pCmd->ActiveConnecti
10、on = m_pConnection; m_pRecordset = m_pCmd->Execute(NULL,NULL,adCmdStoredProc); //返回存储过程的返回值 _bstr_t v_return,v_text; v_return = m_pCmd->Parameters->GetItem("O_RUNSTATUS")->GetValue(); temp = (string)(_bstr_t)v_return; //释放COM库 ::CoUninitialize(); return temp;
11、 } // 捕捉异常 catch(_com_error e) { // 显示错误信息 cerr << "\nERROR:" << (char*)e.Description();//抛出异常 ::CoUninitialize(); return temp; } } //////////////////////////////////////////////////////////////////////////////////////////////// //调用omron_mart存储过程 string Call_Omron_mart_P
12、roduce(long sysdate) { ::CoInitialize(NULL); string temp; try { //初始化ADO三个基本接口; _CommandPtr m_pCmd; _RecordsetPtr m_pRecordset; _ConnectionPtr m_pConnection; // 设置连接字符串,为是BSTR型或者_bstr_t类型 _bstr_t strConnect,bstrSQL; strConnect= "Provider=OraOLEDB.ORACLE.1;
13、Persist Security Info=TRUE;Data Source=10.110.50.103/RELEASE;User ID=OMRON_MART;Password=OMRON_MART;"; //strConnect= "Provider=MSDAORA.1;Persist Security Info=TRUE;Data Source=10.110.50.103/RELEASE;User ID=OMRON_MART;Password=OMRON_MART;"; // 创建Connection对象 m_pConnection.CreateInstance(_
14、uuidof(Connection)); // 创建记录集对象 m_pRecordset.CreateInstance(__uuidof(Recordset)); // 创建CommandPtr对象 m_pCmd.CreateInstance(__uuidof(Command)); m_pConnection->CursorLocation = adUseClient; m_pConnection->Mode = adModeReadWrite; m_pConnection->ConnectionTimeout = 3; m_p
15、Connection->CommandTimeout = 3; m_pConnection->ConnectionString = strConnect; //打开数据库连接 m_pConnection->Open(strConnect,"OMRON_MART","OMRON_MART",adModeUnknown); if(m_pConnection==NULL) { cerr<<"Lind data ERROR!\n"; } else { cout <<"EDW数据跑批完成"<<
16、endl;
cout <<"MART数据库连接成功"<
17、pCmd->CreateParameter(_bstr_t("O_RUNSTATUS"),adVarChar,adParamOutput,60); //lPara1->Value=_bstr_t(" "); m_pCmd->Parameters->Append(lPara1); // MART跑批 m_pCmd->CommandText=_bstr_t("BATCH_MART_CTL_DAILY"); ///需要使用的ADO连接 m_pCmd->CommandType=adCmdStoredProc; m_pC
18、md->ActiveConnection = m_pConnection;
m_pRecordset = m_pCmd->Execute(NULL,NULL,adCmdStoredProc);
cout <<"MART数据跑批完成"<
19、eters->GetItem("O_RUNSTATUS")->GetValue(); temp = (string)(_bstr_t)v_return; ::CoUninitialize(); return temp; //m_pCmd.Detach(); } // 捕捉异常 catch(_com_error e) { // 显示错误信息 cerr << "\nERROR:" << (char*)e.Description();//抛出异常 ::CoUninitialize(); return te
20、mp; } } void Logdetail(string logname) { // 取当前系统时间 //////////////////////////////////////////////////////////////////////////////// time_t timer; time(&timer); tm* t_tm = localtime(&timer); int syshour = t_tm->tm_hour; int sysminiute = t_tm->tm_min; int syss
21、econd = t_tm->tm_sec; long sysdate = getSystemDate(); char sysdatechar[13]; memset(sysdatechar,0,13); ltoa(sysdate,sysdatechar,10); sysdatechar[8]='.'; sysdatechar[9]='l'; sysdatechar[10]='o'; sysdatechar[11]='g'; sysdatechar[12]='\0'; ofstream ofs(s
22、ysdatechar,ios::app);
if(sysminiute<10)
{
ofs< 23、 "< 24、 ///////////////////////////////////////edw
Logdetail("EDW数据跑批开始");
edw = Call_Omron_edw_Produce(sysdate);
//cout< 25、////////////////mart
//Logdetail(edw);
Logdetail("MART数据跑批开始");
mart = Call_Omron_mart_Produce(sysdate);
//cout<






