请教db2下嵌入式sql-c 开发问题
在db2下使用嵌入式sql-c编程,遇到两个问题,希望能得到大家帮助(1)在db2下的字符串是用char(n)来储存的,就连
insert into tablename values ('string',...) 也是用单引号,
现在用esql-c将其读出,结尾好像并没有'\0'来标识,直接printf都会有乱码,
如何能够得到和插入时一样的字符串?
(2)现在我能正常编译运行静态sql程序,但是在尝试用相同的方法编译最简单的动态sql
strcpy(st,"select * from table");
exec sql prepare p1 from :st;
exec sql excute p1;
都会报错
An unexpected token "END-OF-STATEMENT" was found
following "excute p1".Expected tokens may include:"JOIN
<joined_table>".SQLSTATE=42601
然后prepare也报错
Error occured : Prepare operation.
SQLCODE : -818
SQL0818NA timestamp conflict occurred.SQLSTATE=51003
是不是我编译动态sql的方式错了?
db2 connect to stores
db2 prep test.sqc bindfile
db2 bind test.bnd
db2 connect reset
cc -c -O -I../sqllib/include test.c
cc -O -L../sqllib/lib test.o -o test -ldb2 本帖最后由 Law 于 2011-09-13 20:37 编辑
这是一种写法 按照以下例子:
strcpy(sql_stmt,"insert into");
strcat(sql_stmt,tbname);
strcat(sql_stmt,"values(?,?,?,?,?,?,?,?)");
EXEC SQL prepare s1 from:sql_stmt;
EXEC SQL EXECUTE s1 USING :col_c_20_1,:col_c_20_2,:col_n_1_3,:col_c_10_4,:col_c_10_5,:col_c_10_6,:col_c_10_7,:col_c_2000_8 ;
另外一种
sprintf(sSqlstmt,"insert into wh.IMEI_SERVRelation_%s \
select * from %s ",sNcycle,sTable2);
printf("%s\n",sSqlstmt);
EXEC SQL EXECUTE IMMEDIATE:sSqlstmt;
页:
[1]