免费注册 查看新帖 |

Chinaunix

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

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-06-30 14:17 |只看该作者 |倒序浏览
void sql94()
{
        EXEC SQL BEGIN DECLARE SECTION;
        int eno;
        char name[21];
        float salary;
        short eno_ind,name_ind,salary_ind;
        sql_cursor emp_cursor;
        EXEC SQL END DECLARE SECTION;
        EXEC SQL ALLOCATE :emp_cursor;
        EXEC SQL EXECUTE
                BEGIN
        OPEN :emp_cursor FOR SELECT EMPNO,NAME,SALARY FROM EMP;
                END;
        END-EXEC;
        EXEC SQL WHENEVER NOT FOUND DO break;
        for(;
        {
                EXEC SQL FETCH :emp_cursor INTO :eno:eno_ind,:name:name_ind,:salary:salary_ind;
                if((eno_ind==0)&&(name_ind==0)&&(salary_ind==0))
                {
                        printf("no=%d,name:%s,salary:%4.0f\n",eno,name,salary);
                }
                else
                {
                        printf("this record contains null\n";
                }
        }
        EXEC SQL CLOSE :emp_cursor;
        EXEC SQL FREE :emp_cursor;
}

-------------------Configuration: conn - Win32 Debug--------------------
Compiling...
conn.c
H:\PROC\conn\conn.c(1673) : error C2043: illegal break
Error executing cl.exe.

conn.obj - 1 error(s), 0 warning(s)

论坛徽章:
0
2 [报告]
发表于 2005-06-30 15:07 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

不会是鄙视我用windows吧?

论坛徽章:
0
3 [报告]
发表于 2005-06-30 15:38 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

[quote]原帖由 "gsii"]不会是鄙视我用windows吧?[/quote 发表:

这样的心态!!!是信息不足吧

论坛徽章:
0
4 [报告]
发表于 2005-07-04 10:44 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

upup

论坛徽章:
0
5 [报告]
发表于 2005-07-04 12:07 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

conn.c(1673) 那里是啥,贴出来看看

论坛徽章:
0
6 [报告]
发表于 2005-07-04 13:20 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

1677  if (sqlca.sqlcode == 1403) break;

void sql94()
{
        /* EXEC SQL BEGIN DECLARE SECTION; */

        int eno;
        char name[21];
        float salary;
        short eno_ind,name_ind,salary_ind;
        sql_cursor emp_cursor;
        /* EXEC SQL END DECLARE SECTION; */

        /* EXEC SQL ALLOCATE :emp_cursor; */

{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &
sqlstm.sqltdsp = &
sqlstm.stmt = "";
sqlstm.iters = (unsigned int  )1;
sqlstm.offset = (unsigned int  )659;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char  *)&
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int  )0;
sqlstm.sqhstv[0] = (         void  *)&emp_cursor;
sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
sqlstm.sqhsts[0] = (         int  )0;
sqlstm.sqindv[0] = (         void  *)0;
sqlstm.sqinds[0] = (         int  )0;
sqlstm.sqharm[0] = (unsigned int  )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sql_error();
}


        /* EXEC SQL EXECUTE
                BEGIN
        OPEN :emp_cursor FOR SELECT EMPNO,NAME,SALARY FROM EMP;
                END;
        END-EXEC; */

{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &amp;
sqlstm.sqltdsp = &amp;
sqlstm.stmt = "begin OPEN :emp_cursor FOR SELECT EMPNO , NAME , SALARY FRO\
M EMP ; END ;";
sqlstm.iters = (unsigned int  )1;
sqlstm.offset = (unsigned int  )678;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char  *)&amp;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int  )0;
sqlstm.sqhstv[0] = (         void  *)&emp_cursor;
sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
sqlstm.sqhsts[0] = (         int  )0;
sqlstm.sqindv[0] = (         void  *)0;
sqlstm.sqinds[0] = (         int  )0;
sqlstm.sqharm[0] = (unsigned int  )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode == 1403) break;
if (sqlca.sqlcode < 0) sql_error();
}


        /* EXEC SQL WHENEVER NOT FOUND DO break; */

        for(;
        {
                /* EXEC SQL FETCH :emp_cursor INTO :eno:eno_ind,:name:name_ind,:salary:salary_ind; */

{
  struct sqlexd sqlstm;
  sqlstm.sqlvsn = 10;
  sqlstm.arrsiz = 4;
  sqlstm.sqladtp = &amp;
  sqlstm.sqltdsp = &amp;
  sqlstm.iters = (unsigned int  )1;
  sqlstm.offset = (unsigned int  )697;
  sqlstm.selerr = (unsigned short)1;
  sqlstm.cud = sqlcud0;
  sqlstm.sqlest = (unsigned char  *)&amp;
  sqlstm.sqlety = (unsigned short)256;
  sqlstm.occurs = (unsigned int  )0;
  sqlstm.sqhstv[0] = (         void  *)&emp_cursor;
  sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[0] = (         int  )0;
  sqlstm.sqindv[0] = (         void  *)0;
  sqlstm.sqinds[0] = (         int  )0;
  sqlstm.sqharm[0] = (unsigned int  )0;
  sqlstm.sqadto[0] = (unsigned short )0;
  sqlstm.sqtdso[0] = (unsigned short )0;
  sqlstm.sqhstv[1] = (         void  *)&amp;
  sqlstm.sqhstl[1] = (unsigned int  )sizeof(int);
  sqlstm.sqhsts[1] = (         int  )0;
  sqlstm.sqindv[1] = (         void  *)&eno_ind;
  sqlstm.sqinds[1] = (         int  )0;
  sqlstm.sqharm[1] = (unsigned int  )0;
  sqlstm.sqadto[1] = (unsigned short )0;
  sqlstm.sqtdso[1] = (unsigned short )0;
  sqlstm.sqhstv[2] = (         void  *)name;
  sqlstm.sqhstl[2] = (unsigned int  )21;
  sqlstm.sqhsts[2] = (         int  )0;
  sqlstm.sqindv[2] = (         void  *)&name_ind;
  sqlstm.sqinds[2] = (         int  )0;
  sqlstm.sqharm[2] = (unsigned int  )0;
  sqlstm.sqadto[2] = (unsigned short )0;
  sqlstm.sqtdso[2] = (unsigned short )0;
  sqlstm.sqhstv[3] = (         void  *)&amp;
  sqlstm.sqhstl[3] = (unsigned int  )sizeof(float);
  sqlstm.sqhsts[3] = (         int  )0;
  sqlstm.sqindv[3] = (         void  *)&salary_ind;
  sqlstm.sqinds[3] = (         int  )0;
  sqlstm.sqharm[3] = (unsigned int  )0;
  sqlstm.sqadto[3] = (unsigned short )0;
  sqlstm.sqtdso[3] = (unsigned short )0;
  sqlstm.sqphsv = sqlstm.sqhstv;
  sqlstm.sqphsl = sqlstm.sqhstl;
  sqlstm.sqphss = sqlstm.sqhsts;
  sqlstm.sqpind = sqlstm.sqindv;
  sqlstm.sqpins = sqlstm.sqinds;
  sqlstm.sqparm = sqlstm.sqharm;
  sqlstm.sqparc = sqlstm.sqharc;
  sqlstm.sqpadto = sqlstm.sqadto;
  sqlstm.sqptdso = sqlstm.sqtdso;
  sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
  if (sqlca.sqlcode == 1403) break;
  if (sqlca.sqlcode < 0) sql_error();
}


                if((eno_ind==0)&&(name_ind==0)&&(salary_ind==0))
                {
                        printf("no=%d,name:%s,salary:%4.0f\n",eno,name,salary);
                }
                else
                {
                        printf("this record contains null\n";
                }
        }
        printf("this is a test\n";
        /* EXEC SQL CLOSE :emp_cursor; */

{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &amp;
sqlstm.sqltdsp = &amp;
sqlstm.iters = (unsigned int  )1;
sqlstm.offset = (unsigned int  )728;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char  *)&amp;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int  )0;
sqlstm.sqhstv[0] = (         void  *)&emp_cursor;
sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
sqlstm.sqhsts[0] = (         int  )0;
sqlstm.sqindv[0] = (         void  *)0;
sqlstm.sqinds[0] = (         int  )0;
sqlstm.sqharm[0] = (unsigned int  )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sql_error();
}


        /* EXEC SQL FREE :emp_cursor; */

{
struct sqlexd sqlstm;
sqlstm.sqlvsn = 10;
sqlstm.arrsiz = 4;
sqlstm.sqladtp = &amp;
sqlstm.sqltdsp = &amp;
sqlstm.stmt = "";
sqlstm.iters = (unsigned int  )1;
sqlstm.offset = (unsigned int  )747;
sqlstm.cud = sqlcud0;
sqlstm.sqlest = (unsigned char  *)&amp;
sqlstm.sqlety = (unsigned short)256;
sqlstm.occurs = (unsigned int  )0;
sqlstm.sqhstv[0] = (         void  *)&emp_cursor;
sqlstm.sqhstl[0] = (unsigned int  )sizeof(int);
sqlstm.sqhsts[0] = (         int  )0;
sqlstm.sqindv[0] = (         void  *)0;
sqlstm.sqinds[0] = (         int  )0;
sqlstm.sqharm[0] = (unsigned int  )0;
sqlstm.sqadto[0] = (unsigned short )0;
sqlstm.sqtdso[0] = (unsigned short )0;
sqlstm.sqphsv = sqlstm.sqhstv;
sqlstm.sqphsl = sqlstm.sqhstl;
sqlstm.sqphss = sqlstm.sqhsts;
sqlstm.sqpind = sqlstm.sqindv;
sqlstm.sqpins = sqlstm.sqinds;
sqlstm.sqparm = sqlstm.sqharm;
sqlstm.sqparc = sqlstm.sqharc;
sqlstm.sqpadto = sqlstm.sqadto;
sqlstm.sqptdso = sqlstm.sqtdso;
sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);
if (sqlca.sqlcode < 0) sql_error();
}


}

论坛徽章:
0
7 [报告]
发表于 2005-07-04 13:22 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

现在我把这行if注释掉了,可以运行,不过总感觉不对劲

论坛徽章:
0
8 [报告]
发表于 2005-07-04 14:27 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

break一般情况下是写在循环体里面的。也就是while、for 等语句。一般情况下是写一个错误处理函数

论坛徽章:
0
9 [报告]
发表于 2005-07-04 17:00 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

那是oracle的proc工具预编译生成的,不是pc代码里写的阿

论坛徽章:
0
10 [报告]
发表于 2005-07-04 17:46 |只看该作者

windows下开发proc使用内嵌pl/sql预编译通过,编译c文件出错。。

搞清楚1673应该是对应哪一个break,应该是第一个把?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP