proc编译正常,执行Illegal instruction(coredump)

halloo 2009-03-09 06:47:52
主机:Aix5.3
编译:gcc

代码很简单:
int i;
char cftp_usr[21];
sprintf(username,"test");
sprintf(password,"test");
sprintf(dbhost,"cur.test.com");
memset(cftp_usr,0,sizeof(cftp_usr));
EXEC SQL WHENEVER SQLERROR DO sql_error("ORACLE error--\n");
EXEC SQL WHENEVER NOTFOUND DO nothing();
EXEC SQL CONNECT :username IDENTIFIED BY :password USING :dbhost;
/*下一句执行错误 */
EXEC SQL SELECT ftp_user into :cftp_usr FROM KPI_FTP_INFO where busi_type=1;

/* 正常 */
EXEC SQL select kpi_op_accept.nextval into :op_accept from dual;

EXEC SQL COMMIT WORK;


用dbx跟踪后:
"sqlcxt((void **)0, &sqlctx, &sqlstm, &sqlfpn);" is executed.

Illegal instruction (reserved addressing fault) in . at 0x0 ($t1)
0x00000000 00000000 Invalid opcode.
...全文
948 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
halloo 2009-03-12
  • 打赏
  • 举报
回复
问题已经找到了,客户端重新安装就正常了。
yslcuk 2009-03-10
  • 打赏
  • 举报
回复
在头上加入
EXEC SQL INCLUDE sqlca;
#define SQLCODE sqlca.sqlcode

在出错的那句加
if(SQLCODE)
printf("[ERR=%d]\r\n",SQLCODE);

然后用 oerr
看下具体是什么错.
halloo 2009-03-10
  • 打赏
  • 举报
回复
cftp_usr长度够的,比数据库长一位。
sql变量我是单独贴过来的,在通讯区定义的。
后面那一句是出错后将cftp_usr注释能通过,所以对char很疑惑,因为在通讯区分别尝试过varchar和char,都是出错。
cftp_usr不加冒号我还真没尝试过,因为这个是移植过来的程序,在另外的主机上能正常运行,同样是aix5.3。
唯一的区别是原数据库客户端是9i后来的是10g。
halloo 2009-03-10
  • 打赏
  • 举报
回复
cftp_usr不加冒号也是一样的错。
kingstarer 2009-03-10
  • 打赏
  • 举报
回复
你的代码

int i;
char cftp_usr[21];



明显没有放在通讯区里面
halloo 2009-03-10
  • 打赏
  • 举报
回复
结果是单行的。单行用游标我也尝试过,也是同样错误。
客户端是10.1.0.4.2
xiaobo_1123 2009-03-10
  • 打赏
  • 举报
回复
是否查出的结果是多行呢?你使用游标方式执行试试。
robin_yao 2009-03-10
  • 打赏
  • 举报
回复
不可能吧,这么简单的SQL也CORE。
而且CORE在了oracle的库函数里面。
你的客户端装的有没有问题啊?
你把你的客户端版本写出来看看。
halloo 2009-03-10
  • 打赏
  • 举报
回复
sqlca这些头文件已经包含了。
而且这个错误没有被sqlcode截获。直接就是coredump了。
现在郁闷的很,这个错误如果不能解决,就考虑是否需要用proc了。
kingstarer 2009-03-09
  • 打赏
  • 举报
回复
core dump怎么怎么下一句正常呢?

另:你的变量没有放在sql通讯区定义
Andy__Huang 2009-03-09
  • 打赏
  • 举报
回复
应该这样写吧? 变量 cftp_usr前没有冒号
EXEC SQL SELECT ftp_user into cftp_usr FROM KPI_FTP_INFO where busi_type=1;
yslcuk 2009-03-09
  • 打赏
  • 举报
回复
是不是cftp_usr长度定义不够?

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧