免费注册 查看新帖 |

Chinaunix

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

请教各位大哥,PROC的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-01-27 13:50 |只看该作者 |倒序浏览
int insert_record(char *lab_login_name, char *login_ip,
                char *login_date, char *logout_date,
                char *lab_ip, int time_duration, int day)
{

        EXEC SQL BEGIN DECLARE SECTION;  //声明变量
                char lab_login_name2[10];
                char login_ip2[32];
                char login_date2[32];
                char logout_date2[32];
                char lab_ip2[32];
                int time_duration2;                //问题 ::变量声明
                char sqlstr[128];
        EXEC SQL END DECLARE SECTION;

        memset(lab_login_name2, 0, 10);
        memset(login_ip2, 0, 32);
        memset(login_date2, 0, 32);
        memset(logout_date2, 0, 32);
        memset(lab_ip2, 0, 32);
        memset(sqlstr, 0, 12;

        strcpy(lab_login_name2, lab_login_name);
        strcpy(login_ip2, login_ip);
        strcpy(login_date2, login_date);
        strcpy(logout_date2, logout_date);
        strcpy(lab_ip2, lab_ip);
        time_duration2 = time_duration;  //----宿主变量赋值

        sprintf( sqlstr, "insert into z_detail_%d values (:v1, :v2, to_date(:v3, 'DY Mon DD HH24:MI:SS YYYY'), to_date(:v4, '
DY Mon DD HH24:MI:SS YYYY'), :v5, :v6)", day);
        EXEC SQL PREPARE S FROM :sqlstr;
        EXEC SQL EXECUTE S USING :lab_login_name2, :login_ip2, :login_date2,
                :logout_date2, :lab_ip2, :time_duration2;
        printf("timedurantion---------)>;%d",time_duration);
        //打印结果正常
        printf("------------)>;%d",time_duration2);//打印结果总是540702262

????为什么不能正确赋值给time_duration2呢?请指教:)

论坛徽章:
0
2 [报告]
发表于 2004-01-27 14:10 |只看该作者

请教各位大哥,PROC的问题!

啊~~~~~~~~~~~~~,受不了拉~~~~~~~~~~~一个破烂程序总是调不出来!哎,郁闷!

论坛徽章:
0
3 [报告]
发表于 2004-01-27 15:26 |只看该作者

请教各位大哥,PROC的问题!

我不懂sql语句EXEC SQL EXECUTE S USING 是倒入变量,还是把变量值付给数据库,如果是前者,很有可能是sql语句的问题(和数据库有关)

论坛徽章:
0
4 [报告]
发表于 2004-01-27 15:38 |只看该作者

请教各位大哥,PROC的问题!

谢谢,EXEC SQL EXECUTE S USING是把后边的变量替换到SQL语句中,!

论坛徽章:
0
5 [报告]
发表于 2004-01-27 16:00 |只看该作者

请教各位大哥,PROC的问题!

不如你在EXEC SQL EXECUTE S USING的前后,分别打印一下time_duration,time_duration2的值。还有EXEC SQL BEGIN DECLARE SECTION声明的变量受不受保护,受保护的话,很有可能是time_duration2没有副初值,所以打印的是个随机值

论坛徽章:
0
6 [报告]
发表于 2004-01-27 20:19 |只看该作者

请教各位大哥,PROC的问题!

EXEC SQL BEGIN DECLARE SECTION声明 应该没问题的;
你没有在EXEC SQL EXECUTE S USING之前打印time_duration2吗?
正常吗?
数据库里面insert有没有成功执行呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP