免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: simhare
打印 上一主题 下一主题

[C] pro*c 连接oacle数据库的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-06-25 20:42 |只看该作者

回复 #8 mgqw 的帖子

EXEC SQL DECLARE emp_cursor CURSOR FOR
                SELECT NAME,AGE,SALARY FROM EMP;
你这个select语句不需要游标吧,估计下面警告就是这么来的:
======================================
我这是在声明一个游标.

论坛徽章:
0
12 [报告]
发表于 2009-06-25 21:59 |只看该作者

回复 #1 simhare 的帖子

============
今天结不了了,我把程序缩减到只有一句核心代码,还是不行:
我之行前面的连接就没问题,之行查询就不可以:
============
#define USERNAME "pw"
#define PASSWORD "pw"
#define SERVICE "wilson"
#include <stdio.h>
#include <stdlib.h>
#include "sqlca.h"

EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
        char *username=USERNAME;
        char *passwd=PASSWORD;
        char *service=SERVICE;
EXEC SQL END DECLARE SECTION;
int main()
{
        EXEC SQL WHENEVER SQLERROR DO sqlerr();

        EXEC SQL CONNECT :username IDENTIFIED BY :passwd USING :service;
        if (sqlca.sqlcode == 0)
              printf("\n Connected!\n");
        else
              printf("\n%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
        return 0;
}
==============
这个程序完全正常啊,证明能联上数据库啊。

论坛徽章:
0
13 [报告]
发表于 2009-06-25 22:01 |只看该作者

回复 #11 simhare 的帖子

但是再加上这句就不行了,完全找不到"表":
EXEC SQL SELECT ENAME FROM EMP;
===========================
#define USERNAME "pw"
#define PASSWORD "pw"
#define SERVICE "wilson"
#include <stdio.h>
#include <stdlib.h>
#include "sqlca.h"

EXEC SQL INCLUDE SQLCA;
EXEC SQL BEGIN DECLARE SECTION;
        char *username=USERNAME;
        char *passwd=PASSWORD;
        char *service=SERVICE;
EXEC SQL END DECLARE SECTION;
int main()
{
        EXEC SQL WHENEVER SQLERROR DO sqlerr();

        EXEC SQL CONNECT :username IDENTIFIED BY :passwd USING :service;
        EXEC SQL SELECT ENAME FROM EMP;
        if (sqlca.sqlcode == 0)
              printf("\n Connected!\n");
        else
              printf("\n%.*s\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
        return 0;
}

论坛徽章:
0
14 [报告]
发表于 2009-06-25 22:04 |只看该作者

回复 #12 simhare 的帖子

这样就会报错:
==========
identifier 'EMP' must be declared

论坛徽章:
0
15 [报告]
发表于 2009-06-25 22:08 |只看该作者

回复 #13 simhare 的帖子

我专门用pw用户登录后建了一个测试表:
create table ttx(a varchar(10), b number(20));
==============
然后再用
EXEC SQL SELECT B FROM ttx;
==============
结果报错:
identifier 'TTX' must be declared

论坛徽章:
0
16 [报告]
发表于 2009-06-25 22:09 |只看该作者

回复 #14 simhare 的帖子

我要疯掉了。。。。。。

论坛徽章:
0
17 [报告]
发表于 2009-06-26 00:40 |只看该作者
1、如果EMP表已经建好了,请查看下编译时链接的数据库对不对.在Makefile中应该有连接数据库的用户和密码的.
2、如果没有请建好EMP表.用户要弄对.
3、或者是修改Makefile不要让他链接数据库进行数据库对象的检查

论坛徽章:
0
18 [报告]
发表于 2009-06-27 01:33 |只看该作者
检查看看你makefile中的user_id

论坛徽章:
0
19 [报告]
发表于 2009-06-27 01:35 |只看该作者
使用 pw/pw@wilson 登入数据库,看看能成功执行SELECT ENAME FROM EMP 吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP