免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: simhare

[C] 又是我,我这次请各位高手帮我检查两个短小的C程序 [复制链接]

论坛徽章:
0
发表于 2009-06-30 12:01 |显示全部楼层
01403, 00000, "no data found"
// *Cause:
// *Action:

论坛徽章:
0
发表于 2009-06-30 12:13 |显示全部楼层

回复 #7 simhare 的帖子

服务器端再跟踪一下。

论坛徽章:
0
发表于 2009-06-30 13:07 |显示全部楼层

回复 #1 simhare 的帖子

------------------
现在我在
EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno;
之前对al_empno赋值
al_empno=7844
最后得到的结果竟然也是正确的。
===================
这说明什么?

论坛徽章:
0
发表于 2009-06-30 13:10 |显示全部楼层

回复 #12 simhare 的帖子

这不是说明:
EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno;
就是错误的

al_empno=7844
EXEC SQL select ename into :ac_ename from EMP where empno=:al_empno;
就是正确的?

论坛徽章:
0
发表于 2009-06-30 13:51 |显示全部楼层

回复 #14 ljmmail 的帖子

谢谢,ljmmail .
我改成了如下:
========

#include <stdio.h>
#include <stdlib.h>
#include <atmi.h>
#include <userlog.h>

EXEC SQL INCLUDE sqlca;

EXEC SQL BEGIN DECLARE SECTION;
        long al_empno=0;
        char ac_ename[20];
EXEC SQL VAR ac_ename IS STRING(20);
EXEC SQL END DECLARE SECTION;

TEST1(TPSVCINFO *rqst)
{
        /* receive empno from client to get ename from emp */
        //al_empno=(FBFR32 *)rqst->data;
        
        al_empno=aotl(rqst->data);

        EXEC SQL SELECT ENAME INTO :ac_ename FROM EMP WHERE EMPNO=:al_empno;

        if(sqlca.sqlcode!=0)
        {
                userlog("select from EMP failure, sqlcode=%ld, sqlerr=%s\n", sqlca.sqlcode, (char *)sqlca.sqlerrm.sqlerrmc);
                strcpy(rqst->data, sqlca.sqlerrm.sqlerrmc);
                tpreturn(TPFAIL, 0, rqst->data, 0, 0);
        }

        /* return result to client */
        strcpy(rqst->data, ac_ename);
        tpreturn(TPSUCCESS, 0, rqst->data, 0, 0);
}
===========

[ 本帖最后由 simhare 于 2009-6-30 14:01 编辑 ]

论坛徽章:
0
发表于 2009-06-30 13:53 |显示全部楼层

回复 #14 ljmmail 的帖子

可是这样就不不能用buildserver编译了,我先用pro*c预编译结束后,就不能buildserver了:
-----------
Oracle_XA -s TEST1
/tmp/ccdVSYLa.o(.text+0x13): In function `TEST1':
: undefined reference to `aotl'
collect2: ld returned 1 exit status
CMDTUX_CAT:1832: ERROR: can't execute cc -m32   -I$TUXDIR/include -o test1 BS-1bd1.c  -L${TUXDIR}/lib test1.c -I /u01/oracle/precomp/public  -ltux -lbuft  -L${ORACLE_HOME}/lib -lclntsh -lfml -lfml32 -lengine -ldl -lpthread

[ 本帖最后由 simhare 于 2009-6-30 14:05 编辑 ]

论坛徽章:
0
发表于 2009-06-30 14:04 |显示全部楼层

回复 #14 ljmmail 的帖子

aotl是什么啊?
我网上都找不出来,究竟代表什么啊?

论坛徽章:
0
发表于 2009-06-30 14:10 |显示全部楼层

回复 #13 simhare 的帖子

这说明:al_empno服务器端有问题和客户端不一致。

论坛徽章:
0
发表于 2009-06-30 14:11 |显示全部楼层

回复 #14 ljmmail 的帖子

刚才走开了一下。
ljmmail ?下线了?

论坛徽章:
0
发表于 2009-06-30 14:13 |显示全部楼层

回复 #18 ziggler 的帖子

嗯,是啊,究竟为什么会不一致呢?
---------
我把long al_empno=0;
改成:
char al_empno;
最后下面再用:
al_empno=(FBFR32 *)rqst->data;
=========================
这种方案也不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP