免费注册 查看新帖 |

Chinaunix

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

一个pro*c初学者的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-03-06 17:00 |只看该作者 |倒序浏览
#include <STDIO.H>;
EXEC SQL BEGIN DECLARE SECTION;
   VARCHAR   userid[20];
   VARCHAR   userpass[20];
   int       emp_id;
   VARCHAR   fname[20];
   VARCHAR   lname[20];
   VARCHAR   email[25];
   float     salary;
EXEC SQL END DECLARE SECTION;
EXEC SQL INCLUDE SQLCA;
main()
{
   int retcode;
   strcpy(userid.arr,"system";
   userid.len=strlen(userid.arr);
   strcpy(userpass.arr,"manager";
   userpass.len=strlen(userpass.arr);
   EXEC SQL WHENEVER SQLERROR DO sqlerror();
   EXEC SQL CONNECT :userid IDENTIFIED BY :userpass;
   printf("Connect Oracle Database as user: %s\n",userid.arr);*/
   EXEC SQL SELECT EMPLOYEE_ID,FIRST_NAME,LAST_NAME,EMAIL,SALARY
            INTO :emp_id,:fname,:lname,:email,:salary
            FROM EMPLOYEES
            WHERE EMPLOYEE_ID = 100;
   printf("Employee's ID is:%s\n",emp_id);
   printf("Employee's firstname is:%s\n",fname);
   printt("Employee's lastname is:%s\n",lname);
   printf("Employee's email is:%s\n",email);
   printf("Employee's salary is:%s\n",salary);  
}
sqlerror()
{
   EXEC SQL WHENEVER SQLERROR CONTINUE;
   printf("\n Oracle error is detected!";
   printf("\n%s",sqlca.sqlerrm.sqlerrmc);
   exit(1);
}
在自己写一个练习程序时,compile顺利,但是link时出错。(在生成*.c文件时,没有出任何错误)
Linking E:\SZH\TURBOC2\TURBOC2\PRACTISE.EXE:         
Linker Error: Undefined symbol '_printt' in module PRACTISE.C
Linker Error: Undefined symbol '_sqlcxt' in module PRACTISE.C
是不是因为有什么头文件没有被包含近来呀。

论坛徽章:
0
2 [报告]
发表于 2003-03-06 18:00 |只看该作者

一个pro*c初学者的问题

不是
而是因为没有的指明要连接oracle库

论坛徽章:
0
3 [报告]
发表于 2003-03-06 18:54 |只看该作者

一个pro*c初学者的问题

是不是在EXEC SQL CONNECT :userid IDENTIFIED BY :userpass;
处用EXEC SQL CONNECT :userid IDENTIFIED BY :userpass AT :hostname呀

论坛徽章:
0
4 [报告]
发表于 2003-03-07 08:25 |只看该作者

一个pro*c初学者的问题

不是
使用gcc -loraca.lib  .c

其中要加-l ora.lib(这个文件就是oracle的连接库,文件名我忘记了,但是在pro*c的例子中应该可以找到)

论坛徽章:
0
5 [报告]
发表于 2003-03-07 11:31 |只看该作者

一个pro*c初学者的问题

printt("Employee's lastname is:%s\n",lname);
是不是你自己写了一个printt函数,如果没有话就写成printf吧

__sqlctx是在oracle的库,你可以查一查$ORACLE_HOME/precomp/lib/env_precomp.mk

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

一个pro*c初学者的问题

我可能没说清楚,我是在Windows环境下进行编程,不是UNIX环境下的,所以dido所说的那个文件在环境中找不到,但是我想可能是因为哪个头文件没有包含进来,或者是在link的时候少加载了什么库文件,但是我不知道怎么加载,有人能告诉我么?以前也做过嵌入式编程,但是宿主语言不是C,在那个语言里,link时,可以指定要加载的库文件,而对于C,我不知道该怎么去实现。无双兄:我想你所说的那个文件应该是oraSQL9.LIB吧。

论坛徽章:
0
7 [报告]
发表于 2003-03-07 13:10 |只看该作者

一个pro*c初学者的问题

dido所说的printt问题,是我自己不小心敲错了一个字母,现已解决,多谢提醒!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP