📄 sp_file.pc.bak
字号:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sqlca.h>#include <oraca.h>#include <signal.h>#include "sp_file.h"#include "util.h"#include "acct_util.h"#define TMP_SP_FILE_PATH "../tmp_file/"#define SP_FILE_PATH "../sp_file/"int fileAttr = 0;char connStr[32];void main(int argc, char** argv){ int ret; int pid; char gs_local_net[7]; int li_ret; memset(connStr,0x00,sizeof(connStr)); if(argc != 3){ printf("用法:命令 文件属性(1掌上股市 数据库链接串\n"); return; } fileAttr = atoi(argv[1]); strcpy(connStr,argv[2]); strcpy(gs_local_net,"831"); li_ret = init_sqlca_info(connStr,gs_local_net); if(li_ret != 0) { printf("以公共用户登录数据库,初始化全局变量出错!"); return; } pid = fork(); if(pid == -1){ printf("创建企业新时空进程错误!\n"); exit(-1); } if(pid > 0) exit(0); pid = setsid(); if(pid == -1){ printf("改变企业新时空进程属性错误!\n"); exit(-1); } /*设置UNIX下的信号无效*/ signal(SIGINT, SIG_IGN); signal(SIGTERM, SIG_IGN); signal(SIGQUIT, SIG_IGN); signal(SIGCLD, SIG_IGN); if(fileAttr == 1) xsk_file(); else printf("文件属性参数无效\n"); return;}/*企业新时空*/void xsk_file(){ int ret; char totalRecord[20]; char fileDateTime[15]; char fileName[128]; char command[32]; char deviceNumber[65]; char status_code[6]; char remarks[20]; int record_seri =0; FILE *fd = NULL; memset(command,0x00,sizeof(command)); memset(fileDateTime,0x00,sizeof(fileDateTime)); memset(fileName,0x00,sizeof(fileName)); EXEC SQL WHENEVER SQLERROR DO sql_error("function:dinner_send"); EXEC SQL CONNECT :sqlca_ib.log_id IDENTIFIED BY :sqlca_ib.log_pass USING :sqlca_ib.serv_name; EXEC SQL SELECT TO_CHAR(SYSDATE,'YYYYMMDDHH24MISS') INTO :fileDateTime FROM DUAL; PackString(fileDateTime); sprintf(fileName,"%sNCF-%s.req",TMP_SP_FILE_PATH,fileDateTime); PackString(fileName); if((fd = fopen(fileName,"a")) == NULL){ printf("open file error\n"); return; } /*EXEC SQL DECLARE cur_smg_sp CURSOR for select device_number,decode(status_code,'101','1','0'),decode(status_code,'101','开机','停机') from info_busi where device_number like '89234%' and flag = '0' and tele_type = 'LOCAL';*/ EXEC SQL DECLARE cur_smg_sp CURSOR for select a.device_number,decode(b.status_code,'101','1','0'),decode(b.status_code,'101','开机','停机') from info_corporation a,info_local b where a.flag = '0' and a.user_no = b.user_no and b.flag = '0'; EXEC SQL OPEN cur_smg_sp; while(1){ memset(deviceNumber,0x00,sizeof(deviceNumber)); memset(status_code,0x00,sizeof(status_code)); memset(remarks,0x00,sizeof(remarks)); EXEC SQL FETCH cur_smg_sp INTO :deviceNumber, :status_code, :remarks; if(sqlca.sqlcode == 1403) break; record_seri++; PackString(deviceNumber); PackString(status_code); PackString(remarks); fprintf(fd,"%d|%s|%s|%s|%s|\n", record_seri,deviceNumber,status_code,fileDateTime,remarks); fflush(fd); } EXEC SQL CLOSE cur_smg_sp; fprintf(fd,"%s\n","END"); fflush(fd); fclose(fd); WriteLog(" 创建企业新时空文件 success\n"); sprintf(command,"mv %s/*.* %s/",TMP_SP_FILE_PATH,SP_FILE_PATH); system(command); return; }void sql_error(char *msg){ EXEC SQL WHENEVER SQLERROR CONTINUE; printf("%s:%s\n",msg,sqlca.sqlerrm.sqlerrmc); EXEC SQL ROLLBACK RELEASE; exit(1);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -