strcat(c_sql,"from USER_FEE_"); strcat(c_sql,ac_mon); strcat(c_sql," \n where c_user_id = :v1"); EXEC SQL PREPARE s FROM :c_sql; EXEC SQL DECLARE cur_user_fee CURSOR FOR s; EXEC SQL OPEN cur_user_fee USING :ac_user_id; while(1) { EXEC SQL FETCH cur_user_fee into :c_user_id,:c_user_name,:c_date,:n_fee); if (sqlca.sqlcode < 0) { /*FETCH CURSOR失败*/ printf("fetch cursor cur_user_fee fail,sqlcode=%ld,sqlserr=%s",sqlca.sqlcode,sqlca.sqlerrm.sqlerrmc); } if( sqlca.sqlcode == SQLNOTFOUND) { break; } } EXEC SQL CLOSE cur_user_fee; (4)动态SQL4:要处理的字段及输入的宿主变量数目和主变量的类型事先是不知道的,如: INSERT INTO EMP (<unknown> VALUES (<unknown> 是最复杂的动态SQL,很少用,在此不做介绍。 10、SQLCA:SQL是ORACLE的一个结构体,它的域用于最近的一条SQL语句执行后的一些信息,如错误号,错误描述,警告,状态等。常用的 域介绍如下: SQLCA.sqlcode:错误号,=0正确,=1403没取到数据 SQLCA.sqlserrm.sqlerrmc:错误描述 SQLCA.sqlerrd[3]:最近的一条SQL语句所处理的行数,如果该语句处理失败,则它的值是不定的,如果错误在一个CURSOR操作中发生,则 它的值指已成功处理的行数.在DELETE,UPDATE中,它不包含因外键约束而删除,更新的那些行, DELETE FROM EMP WHERE DEPT='SALE'; 在表EMP中删除20行,但如果表EMP与表ADDRESS有外键约束,导致表ADDRESS也被删除20行,则SQLCA.sqlerrd[3]=20,而不是40。 (出处:清风网络学院)
上一篇:Oracle调优(入门及提高篇)
下一篇:Oracle9i数据库设计指引全集二
|