免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1423 | 回复: 8
打印 上一主题 下一主题

麻烦帮我看看 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-21 17:12 |只看该作者 |倒序浏览
麻烦帮我看看什么错误?

这是pro*c下的一段代码,我不知那儿出错呢,proc不能通过。


#include "zltsl.c"
#include <string.h>;
#include <sqlca.h>;
#define NAME_LENGTH    8
#define ARRAY_LENGTH   5

char Ora_passwd[100];
char Ora_pwd[100];
long m_WaitTime;

void doInit();
void WriteStrLog();
int system_init();

void sql_error();

main()

{
        int i,ret;
        int s;
        WriteStrLog("开始初始化系统:";
        ret=system_init();
        if (ret<0) {
                printf("System init failed!\n";
                exit(0);
        };
        WriteStrLog("系统初始化完成,开始系统的监视工作!";
    signal (SIGINT, SIG_IGN);
    signal (SIGQUIT, SIG_IGN);
    signal (SIGHUP, SIG_IGN);
    signal(SIGPIPE,SIG_IGN);

     //        if (argc<2) {
                doInit();
        /*}
        else {
               
                sprintf(m_SmsgSingleSend.phoneStr,"%s",argv[1]);
                sprintf(m_SmsgSingleSend.msgStr,"%s",argv[2]);
                SendMessageOut(MSG_SEND_SINGLE,argv[1],argv[2]);
        };*/
}

int system_init()
{
        char tmpstr[280],dirStr[256];
        int i;

        /***********************************************************/

        printf("System Back Watcher is starting...\n";
        memset(tmpstr,0,sizeof(tmpstr));
        strcat(tmpstr,"watcher.conf";
        if (setinifilename(tmpstr)<0) {
                printf("Error!\n";
                return -1;
        };

        printf("Loading System Back Watcher Configuration...\n";
        m_WaitTime=getparamenter ("m_WaitTime", 0, NULL);
        if (m_WaitTime<0) {
                printf("Error!\n";
                return -1;
        };

        //getparamenter("Ora_user", 1, Ora_user);
        //getparamenter("Ora_pwd", 1, Ora_pwd);
       
        memset(tmpstr,0,sizeof(tmpstr));
    sprintf(tmpstr,"%s/sms.conf",dirStr);
        if (setinifilename(tmpstr)<0) {
                printf("Error!\n";
                return -1;
        };
        printf("System ready!\n";
        return 1;
}

void doInit()
{      

       int WaitAHour=0;
        time_t tt;
        struct tm* st;
        int count_del;
        int WriteFlag;
        char strTmp[1024];
        unsigned long NowTime,tmpTime;
        unsigned long iTime,DEndTime1,DEndTime2;
         //int errFlag=0;
          while(1){
                //if (errFlag) sleep(1000);
                if (WaitAHour) {
                        WriteStrLog("等待一段时间重新开始");
                        sleep(1000);
                        tt = time(NULL);
                        st = localtime(&amp;tt);
                        tmpTime=st->;tm_hour*10000+st->;tm_min*100+st->;tm_sec;
                        if (tmpTime<NowTime) tmpTime+=240000;
                        if (tmpTime<=NowTime+m_WaitTime) continue;
                        WaitAHour=0;
                };
                system("rm -rf aa*");
                WriteStrLog("清除系统日志完成!");
                EXEC SQL WHENEVER SQLERROR DO sql_error("Connect error:");

                   EXEC SQL CONNECT :Ora_user IDENTIFIED BY :Ora_pwd;
                sprintf(strTmp,"Connected to ORACLE as user: %s",Ora_user);
           


                    EXEC SQL WHENEVER SQLERROR DO sql_error("Oracle error:");
                    EXEC SQL
                       SELECT count(*) into :count_del FROM bbs where bbs_code='371';
                sprintf(strTmp,"\n bbs create time is:%d",count_del);

                  EXEC SQL COMMIT WORK RELEASE;

                WaitAHour=1;
            }
}

void WriteStrLog(char *iStr)
{
        FILE *fp;
        char fname[256],oStr[2048];

        time_t tt = time(NULL);
        struct tm* st = localtime(&amp;tt);
        sprintf(fname,"Watcher%02d%02d%02d.txt",
                st->;tm_year+1900,st->;tm_mon+1,st->;tm_mday);

        if ((fp = fopen (fname, "a")) == NULL)        {
          perror("Can not open LOG file!\n");
          return;
        };

        sprintf(oStr,"[%02d:%02d:%02d]:%s\n",
                st->;tm_hour,st->;tm_min,st->;tm_sec,iStr);
        fputs(oStr,fp);
        fclose(fp);
}

void sql_error(msg)
    char *msg;
{
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    WriteStrLog(msg);
    WriteStrLog(sqlca.sqlerrm.sqlerrmc);

    EXEC SQL ROLLBACK WORK RELEASE;
    exit(EXIT_FAILURE);
}

论坛徽章:
0
2 [报告]
发表于 2003-02-21 21:28 |只看该作者

麻烦帮我看看

写代码时使用
code
功能
见置顶

这样大家看起来都好一点

论坛徽章:
0
3 [报告]
发表于 2003-02-21 21:29 |只看该作者

麻烦帮我看看

另外是使用pro*c编译器编译文件不成功还是什么时候不成功
应该说清楚

pro*c 编译器的设置应该正确

论坛徽章:
0
4 [报告]
发表于 2003-02-21 21:35 |只看该作者

麻烦帮我看看

还有对ORACLE和C中
都使用的变量

应该使用
EXEC SQL BEGIN DECLARE SESION
变量定义
EXEC SQL END DECLARE SESION


可以看前面的PRO*C问答

论坛徽章:
0
5 [报告]
发表于 2003-02-24 17:26 |只看该作者

麻烦帮我看看

多谢无双大哥,


刚开始学pro*c的编程,真的没一点头绪,一个人摸索,

以后还亏大哥及各位大虾指点哟

论坛徽章:
0
6 [报告]
发表于 2003-02-25 10:41 |只看该作者

麻烦帮我看看

我真笨,还是没搞定,一个个试了结果发现是我的pro*c找不到#include <sys/socket.h>;
#include <netdb.h>;
#include <netinet/in.h>;
#include <arpa/inet.h>;
#include <assert.h>;
#include <sys/time.h>;
#include <sys/types.h>;
#include <signal.h>;
#include <errno.h>;
#include <netdb.h>;
#include <setjmp.h>;
#include <time.h>;
#include <poll.h>;
#include <sys/ipc.h>;
#include <sys/msg.h>;
#include <sys/stat.h>;
#include <sys/wait.h>;

这里面的一些库函数,我的proc配置如下,看看正确么?能告诉我是什么原因么?

sys_include=($ORACLE_HOME/precomp/public,$ORACLE_HOME/lib,/usr/include,/usr/li
gcc-lib/i386-redhat-linux/egcs-2.91.66/include)
include=(/usr/include)
include=($ORACLE_HOME/precomp/public)
include=$ORACLE_HOME/lib
include=$ORACLE_HOME/precomp/hdrs
include=$ORACLE_HOME/tpcc2x_2/src
include=$ORACLE_HOME/precomp/include
include=$ORACLE_HOME/oracore/include
include=$ORACLE_HOME/oracore/public
include=$ORACLE_HOME/rdbms/include
include=$ORACLE_HOME/rdbms/public
include=$ORACLE_HOME/rdbms/demo
include=$ORACLE_HOME/nlsrtl/include
include=$ORACLE_HOME/nlsrtl/public
include=$ORACLE_HOME/network_src/include
include=$ORACLE_HOME/network_src/public
include=$ORACLE_HOME/network/include
include=$ORACLE_HOME/network/public
include=$ORACLE_HOME/plsql/public
ltype=short

论坛徽章:
0
7 [报告]
发表于 2003-02-25 17:34 |只看该作者

麻烦帮我看看

我真笨,还是没搞定,一个个试了结果发现是我的pro*c找不到#include <sys/socket.h>;


把pro*c编译器的设置改一下
警告级别不用那么高
就可以了

论坛徽章:
0
8 [报告]
发表于 2003-02-25 17:36 |只看该作者

麻烦帮我看看

我的
code=cpp sqlcheck=semantics

如果sqlcheck很高
那么会报头文件出错

论坛徽章:
0
9 [报告]
发表于 2003-02-27 09:40 |只看该作者

麻烦帮我看看

多谢无双大哥,终于搞定了,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP