免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 C/C++ 求助
最近访问板块 发新帖
查看: 1519 | 回复: 7
打印 上一主题 下一主题

求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-02-18 11:49 |只看该作者 |倒序浏览
//#include <iostream.h>;
#include <stdlib.h>;
#include <stdio.h>;
#include "e:\oracle\ora81\precomp\public\sqlca.h"

void error_proc();

void main()
{
char uname[] = "westnetwork/westnetwork";
char dname[] = "YX";

//EXEC SQL BEGIN DECLARE SECTION;
char RoadName[20];
char RoadNo[20];
//EXEC SQL END DECLARE SECTION;

//异常
EXEC SQL WHENEVER SQLERROR DO error_proc();
//连接
EXEC SQL CONNECT :uname USING :dname;

//EXEC SQL WHENEVER NOT FOUND DO CONTINUE;
//Select、Insert、Update等SQL处理
//EXEC SQL SELECT roadno,roadname INTO :RoadNo,:RoadName FROM road
//WHERE roadno=105;
//printf("\n 路段编码:%-20s 路段名称: %-20s\n",RoadNo,RoadName);

EXEC SQL DECLARE c1 CURSOR FOR
SELECT ROADNO,ROADNAME FROM ROAD;

EXEC SQL OPEN c1;

do
{
    EXEC SQL FETCH c1 INTO :RoadNo,:RoadName;
    if (sqlca.sqlcode=1403) break;
    printf("\n 路段编码:%-20s 路段名称: %-20s\n",RoadNo,RoadName);
    //getch();
}while (1);

EXEC SQL CLOSE c1;

//提交并释放连接
EXEC SQL COMMIT WORK RELEASE;
exit(0);
}
void error_proc()
{
printf("\n%.*s!",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
exit(-1);
}

上面代码不用游标可以,如何用游标,问题在哪?

论坛徽章:
0
2 [报告]
发表于 2003-02-18 13:10 |只看该作者

求助

//EXEC SQL BEGIN DECLARE SECTION;
char RoadName[20];
char RoadNo[20];
//EXEC SQL END DECLARE SECTION;

定义部分不能去掉

论坛徽章:
0
3 [报告]
发表于 2003-02-18 14:45 |只看该作者

求助

//EXEC SQL BEGIN DECLARE SECTION;
char RoadName[20];
char RoadNo[20];
//EXEC SQL END DECLARE SECTION;

定义部分不能去掉
====================================
不对呀。不使用游标时,我通过where子句限制返回记录数为1,
不管定义部分去不去掉都可以的。
用游标是想返回多条记录,但是我却看不到结果了。再帮我分析一下。

论坛徽章:
0
4 [报告]
发表于 2003-02-18 15:01 |只看该作者

求助

EXEC SQL BEGIN DECLARE SECTION;
char RoadName[20];
char RoadNo[20];
EXEC SQL END DECLARE SECTION;

以上定义是声明可以在proc中使用的变量
定义与ORACLE 之间的变量交换区

其它部分都符合PRO*C的标准
我没有看出有什么问题

论坛徽章:
0
5 [报告]
发表于 2003-02-18 15:06 |只看该作者

求助

我很菜呀,错在下面
if (sqlca.sqlcode=1403) break;
应为
if (sqlca.sqlcode==1403) break;

论坛徽章:
0
6 [报告]
发表于 2003-02-19 09:12 |只看该作者

求助

把c文件换成cpp文件时,连接出错,怎么回事。输出语句我已改为cout,编译通过。


Compiling...
test1.cpp
Linking...
test1.obj : error LNK2001: unresolved external symbol "void __cdecl sqlcxt(void * *,unsigned long *,struct sqlexd *,struct sqlcxp const *)" (?sqlcxt@@YAXPAPAXPAKPAUsqlexd@@PBUsqlcxp@@@Z)
Debug/test2.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

test2.exe - 2 error(s), 0 warning(s)

论坛徽章:
0
7 [报告]
发表于 2003-02-19 09:14 |只看该作者

求助

你的pro*c编译器设置有问题

应该把输出语言设置成c++而不是c

论坛徽章:
0
8 [报告]
发表于 2003-02-19 12:06 |只看该作者

求助

是啊,我已设置Pro*C/C++的菜单:首选项--默认输出C++文件名。找不到原因。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP