- 论坛徽章:
- 0
|
项目的设计是这样的:
从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标识符使用?占位符,必须在准备语句文本时说明这些标识符。”不知道所谓的“必须在准备语句文本时说明这些标识符”,应该怎样子写。
望各位英雄不吝赐教。在下拜谢了。 |
|