免费注册 查看新帖 |

Chinaunix

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

informix下esqlc的问题。各位高手帮帮我啊! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-03-31 15:07 |只看该作者 |倒序浏览
项目的设计是这样的:
从A机器的A数据库向B机器的B数据库逐条插入数据。两个数据库之间的表完全相同。假设这些数据表的名字分别为a,b,c...。

我的程序框架是这样写的:
$char srcDB[128], objDB[128];
int main(int argc, char** argv)
{
    $char strsql[1024];
    $database :srcDB;
    $database :objDB;
    sprintf(strsql,"select * from %s:%s",srcDB,tname);
    $PREPARE pro_sql FROM :strsql;
    $DECLARE cur1 CURSOR FOR pro_sql;
    $OPEN cur1;
    while(1)
    {
          memset(&mediaData,0x00, sizeof(COMB_cbapp));//&mediaData是我定义的一个数据结构
          fetch cur1 into :mediaData;
          if(sqlca.sqlcode=100)
             break;
          memset(strsqlsub, 0x00, sizeof(strsqlsub));
          //剩下的是执行向目标数据库的某个表插入数据。
          //目标数据库的名字保存在变量objDB中,表的名字保存在变量tname中。
          //数据包含在mediaData中。
          //我现在只能把数据库,数据表,数据变量都固定死了,才能写,比如下边的语句:
          $insert into shpmis:cbapp_tmp values(:mediaData);//这句是正确的,能够执行。
          //我希望能够改成这个样子:
          /*$insert into $objDB:$tname values(:mediaData);*/
          //各位英雄教教我吧。我实在是不会阿。
    }
}

附:
我在informix的一个手册中查询动态SQL的写法,其中有个规定是这样子的:“不能对诸如数据库名表名或字段名之类的SQL标识符使用?占位符,必须在准备语句文本时说明这些标识符。”不知道所谓的“必须在准备语句文本时说明这些标识符”,应该怎样子写。
望各位英雄不吝赐教。在下拜谢了。

论坛徽章:
0
2 [报告]
发表于 2007-03-31 15:10 |只看该作者
在线等

论坛徽章:
0
3 [报告]
发表于 2007-04-04 21:52 |只看该作者

动态SQL

使用动态SQL才可,EC支持。

论坛徽章:
0
4 [报告]
发表于 2007-04-05 16:41 |只看该作者
$INFORMIXDIR/demo/esqlc/demo3.ec
$INFORMIXDIR/demo/esqlc/demo4.ec

他们的差别主要在于4更加方便些,3需要自己分配字段存储空间

论坛徽章:
0
5 [报告]
发表于 2007-04-07 18:03 |只看该作者
多谢楼上的两位英雄!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP