免费注册 查看新帖 |

Chinaunix

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

一个DB2专家无法解决的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-01 16:00 |只看该作者 |倒序浏览
有这样一段程序:
b.h:
----------------------------------------------------------------------------
----------------------------------------------------------------------------
#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>;

EXEC SQL BEGIN DECLARE SECTION;  
  struct st {
           char yname[13];
           long age;
            }
EXEC SQL END DECLARE SECTION;

b.sqc
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
#include <stdio.h>;
#include <stdlib.h>;
#include <string.h>;
#include <sqlca.h>;
#include <b.h>;
EXEC SQL INCLUDE SQLCA;
EXEC SQL INCLUDE b;
         
main()
{
EXEC SQL BEGIN DECLARE SECTION;  
     char userid[9];
     char passwd[19];
     long iage=20;
     struct st info;
EXEC SQL END DECLARE SECTION;

EXEC SQL CONNECT TO sample USER a1 USING a1;
   
  EXEC SQL SELECT name INTO :info.yname  
            FROM per
           WHERE age = :iage;
  
printf("name = %s\n", info.yname);
  
  EXEC SQL CONNECT RESET;   
   
}
-----------------------------------------------------------------------------------
预编译提示错误:
The token "info" found in a host variable  declaration is not valid
也就是说在头文件中申明的结构体,在sqc文件中,不被主函数识别。

    经过一定的调试,发现只有在头文件中申明结构的同时定义一个结构变量,或者在sqc文件的EXEC SQL BEGIN DECLARE SECTION;  中申明结构并定义结构变量,预编译才会通过。
    但是,以上的操作已经使info变成了全局变量了,这显然不是我们希望看到的。
   请了一个 DB2的专家来解决问题,他说这是DB2自身的设计,没别的办法。
   网络世界卧虎藏龙,不知各位大侠有何高见?谢谢!
         

论坛徽章:
0
2 [报告]
发表于 2004-11-01 16:46 |只看该作者

一个DB2专家无法解决的问题

1、头文件申明的结构体,要使用DB2INCLUDE环境变量include进来才能生效
2、并不是只有DB2有这样的问题,其它数据库也会有这样的问题,只不过其它数据库可以使用类似于Informix的parameter参数来指明变量范围,而DB2不可以。一些SQL的资源,如cursor的名字等,在很多数据库中都是全局变量

论坛徽章:
0
3 [报告]
发表于 2004-11-01 17:09 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP