免费注册 查看新帖 |

Chinaunix

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

你遇见到这个情况没有啊?大家看一下啊. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-30 15:00 |只看该作者 |倒序浏览
Pro*C/C++: Release 2.2.4.0.0 - Production on Mon May 28 16:26:39 2007

Copyright (c) Oracle Corporation 1979, 1996.  All rights reserved.

System default option values taken from: /usr/oracle/precomp/admin/pcscfg.h

Preprocessor error at line 77, column 1, file 312.pc:
1
(1)PCC-S-02022, Found end of file while scanning a SQL statement


(1) PCC-F-02102, Fatal error while doing C preprocessing

说明:ORACLE 版本 7.3.4  unix 下 PRO*C 编的程序
312.pc共 76 行. 这是什么原因啊 .
另外 : PCC-S 的错误代码怎么查找啊? 象 $oerr ora errno 那样的命令有没有啊?



希望解决啊

#include <stdio.h>
#include <string.h>
typedef char asciz;

EXEC SQL BEGIN DECLARE SECTION;
   EXEC SQL TYPE asciz IS STRING(20);
   asciz username[20];
   asciz password[20];
   int dept_number;
   char address[10][21];
   char emp_name[10][21];
   int tex[10];
   int done_flag;
   int array_size;
   int ret_num;
   int SQLCODE;
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE sqlca;
int print_rows();
int sqlerror();


main()
{
   int i;
   strcpy(username,"han";
   strcpy(password,"han";

   EXEC SQL WHENEVER SQLERROR DO sqlerror();
   EXEC SQL CONNECT :username IDENTIFIED BY :password;
   printf("\nConnect to ORACLE as user:%s\n",username);
   printf("Enter department number:";
   scanf("%d",&dept_number);
   fflush(stdin);
   array_size=10;
   done_flag=0;
   ret_num=0;

   for(;
   {
        EXEC SQL EXECUTE
           BEGIN
                emp_actions.get_employees                (:dept_number,:array_size,:ret_num,:done_flag,
                :emp_name,:address,:tex);
           END;
        END_EXEC;
        print_rows(ret_num);
        if (done_flag)
                break;
   }
   EXEC SQL COMMIT WORK RELEASE;
   exit(0);
}
print_rows(n)
int n;
{
   int i;
   if (n==0)
   {
      printf("No rows retrieved.\n";
      return;
    }
    printf("\n\nGot %d rows %c\n",n,n==1?'\0':'s');
    printf("%-20.20s%-50.50s%s\n","Ename","Address","Tex";
    for(i=0;i<n;i++)
        printf("%-20.20s%-50.50s%d\n",emp_name,address,tex);
}


sqlerror()
{
   EXEC SQL WHENEVER SQLERROR CONTINUE;
   printf("\nORACLE error detected:";
   printf("\n%.70s\n",sqlca.sqlerrm.sqlerrmc);
   EXEC SQL ROLLBACK WORK RELEASE;
   exit(1);
}

[ 本帖最后由 hzyhzj3 于 2007-6-4 09:09 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP