一个Pro*c的问题
int Idcode_chk_inf_test_Dec_Sel ( reply , fmtstr , va_alist )
char *reply;
char *fmtstr;
va_dcl
{
EXEC SQL BEGIN DECLARE SECTION;
char comm[1000];
EXEC SQL END DECLARE SECTION;
char wherelist[800];
va_list ap;
va_start(ap);
vsprintf ( wherelist , fmtstr , ap );
va_end(ap);
sprintf ( comm ," SELECT rowid,idcode_chk_inf_test.* FROM idcode_chk_inf_test WHERE ");
key_strcat(comm,wherelist);
vtcp_log("%s,%d,SQLSTR=[%s]\n",__FILE__,__LINE__,comm);
sqlca.sqlcode=0;
EXEC SQL PREPARE idcode_chk_inf_test_sel FROM :comm;
EXEC SQL DECLARE sel_idcode_chk_inf_test CURSOR FOR idcode_chk_inf_test_sel;
EXEC SQL OPEN sel_idcode_chk_inf_test;
if (sqlca.sqlcode){
sprintf(acErrMsg,"OPEN idcode_chk_inf_test error %d",sqlca.sqlcode);
WRITEMSG
strcpy ( reply , "D102" );
return CM_SQLCODE;
}
return 0;
}
int Idcode_chk_inf_test_Fet_Sel ( struct idcode_chk_inf_test_c *idcode_chk_inf_test_c , char * reply )
{
int ret;
EXEC SQL FETCH sel_idcode_chk_inf_test INTO :idcode_chk_inf_test_c;
if (sqlca.sqlcode&&sqlca.sqlcode!=1403){
sprintf(acErrMsg,"Fetch idcode_chk_inf_test error!!! %d",sqlca.sqlcode);
WRITEMSG
strcpy (reply,"D103");
return CM_SQLCODE;
}
else if ( sqlca.sqlcode == 1403 ){
sprintf(acErrMsg,"Fetch idcode_chk_inf_test finished!!! %d",sqlca.sqlcode);
WRITEMSG
strcpy (reply,"D104");
return CM_SQLCODE;
}
zip_struct(idcode_chk_inf_test_c);
return 0;
}
红色字体位置出错,说变量未定义,说的应该是那个游标sel_idcode_chk_inf_test吧,但是吧蓝色字体游标定义的部分拷贝到红色字体上面,就会说试图重定义,不知道哪位大虾能帮忙看看怎么回事
char *reply;
char *fmtstr;
va_dcl
{
EXEC SQL BEGIN DECLARE SECTION;
char comm[1000];
EXEC SQL END DECLARE SECTION;
char wherelist[800];
va_list ap;
va_start(ap);
vsprintf ( wherelist , fmtstr , ap );
va_end(ap);
sprintf ( comm ," SELECT rowid,idcode_chk_inf_test.* FROM idcode_chk_inf_test WHERE ");
key_strcat(comm,wherelist);
vtcp_log("%s,%d,SQLSTR=[%s]\n",__FILE__,__LINE__,comm);
sqlca.sqlcode=0;
EXEC SQL PREPARE idcode_chk_inf_test_sel FROM :comm;
EXEC SQL DECLARE sel_idcode_chk_inf_test CURSOR FOR idcode_chk_inf_test_sel;
EXEC SQL OPEN sel_idcode_chk_inf_test;
if (sqlca.sqlcode){
sprintf(acErrMsg,"OPEN idcode_chk_inf_test error %d",sqlca.sqlcode);
WRITEMSG
strcpy ( reply , "D102" );
return CM_SQLCODE;
}
return 0;
}
int Idcode_chk_inf_test_Fet_Sel ( struct idcode_chk_inf_test_c *idcode_chk_inf_test_c , char * reply )
{
int ret;
EXEC SQL FETCH sel_idcode_chk_inf_test INTO :idcode_chk_inf_test_c;
if (sqlca.sqlcode&&sqlca.sqlcode!=1403){
sprintf(acErrMsg,"Fetch idcode_chk_inf_test error!!! %d",sqlca.sqlcode);
WRITEMSG
strcpy (reply,"D103");
return CM_SQLCODE;
}
else if ( sqlca.sqlcode == 1403 ){
sprintf(acErrMsg,"Fetch idcode_chk_inf_test finished!!! %d",sqlca.sqlcode);
WRITEMSG
strcpy (reply,"D104");
return CM_SQLCODE;
}
zip_struct(idcode_chk_inf_test_c);
return 0;
}
红色字体位置出错,说变量未定义,说的应该是那个游标sel_idcode_chk_inf_test吧,但是吧蓝色字体游标定义的部分拷贝到红色字体上面,就会说试图重定义,不知道哪位大虾能帮忙看看怎么回事
...全文
相关推荐
精通PRO*c编程
精通PRO*c编程
Pro*C编程入门实例:遇到一个简单问题的解决方法
在Pro*C编程中,遇到简单问题也可能让人困惑,但只要仔细分析并采取正确的解决方法,问题往往并不难以解决。本文介绍了一个简单问题的解决方法,并给出了相应的源代码和描述。希望对初学者们有所帮助!在执行查询之后,检查sqlca.sqlcode是否为0,如果不为0则说明查询失败,调用check_error()函数打印错误信息并退出程序。在上述代码中,我们首先声明了相关变量,包括姓名的最大长度和查询语句的最大长度。通过以上步骤,我们完成了一个简单的Pro*C程序,实现了根据姓名查询年龄并打印输出的功能。
oracle培训pro*c
oracle数据库pro*c程序的教程。
《精通Oracle 10g Pro*C/C++编程》源代码与学习笔记
《精通Oracle 10g Pro*C/C++编程》(王海亮,张立民 中国水利水电出版社)书中源代码和学习笔记,对于原代码中出现的一些问题已经修改!
pro*c 实现分页总结
根据项目中的实际经验和网上资料总计了一些实现分页查询的方法



