免费注册 查看新帖 |

Chinaunix

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

proc的一个插入数据的简单例子,没成功,求助【结贴】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-03-23 17:17 |只看该作者 |倒序浏览
本帖最后由 112233yxl_cu 于 2010-03-24 09:59 编辑

源码如下
#include<stdio.h>
EXEC SQL INCLUDE sqlca;
main()
{
        EXEC SQL BEGIN DECLARE SECTION;
        VARCHAR code[20], usr[20], pwd[20];
        EXEC SQL END DECLARE SECTION;

        strcpy(usr.arr, "test");
        usr.len=strlen(usr.arr);
        strcpy(pwd.arr, "test");
        pwd.len=strlen(pwd.arr);

        EXEC SQL CONNECT :usr IDENTIFIED BY :pwd;
        EXEC SQL insert into test_tab values('1',4);
        EXEC SQL COMMIT WORK;
        EXEC SQL COMMIT WORK RELEASE;

        return 0;
}

test_tab就俩字段,一个是vchar2(21)一个是number(3)。为什么直接插入数据就不成功呢?求解
编译已经通过,执行没错误

论坛徽章:
0
2 [报告]
发表于 2010-03-23 17:45 |只看该作者
你的SID呢?

论坛徽章:
0
3 [报告]
发表于 2010-03-23 17:46 |只看该作者
给你看看我写的
/*连接数据库*/
int db_connec(PUB_CFG *db_conn)
{
        EXEC SQL BEGIN DECLARE SECTION;
        char db_pwd[MAX_L];
        char user_sid[MAX_L];
        char db_sid[MAX_L];
        char db_user[MAX_L];
        EXEC SQL END DECLARE SECTION;

        memset(db_sid,0x00,sizeof db_sid);
        memset(db_user,0x00,sizeof db_user);
        memset(db_pwd,0x00,sizeof db_pwd);
        memset(user_sid,0x00,sizeof(user_sid));

        strcpy(db_sid,db_conn->db_sid);
        strcpy(db_user,db_conn->db_user);
        strcpy(db_pwd,db_conn->db_u_pwd);

        if (strlen(db_sid) && strlen(db_user) && strlen(db_pwd))
        {
                sprintf(user_sid,"%s@%s",db_user,db_sid);
        }
        else
        {
                LOG(ERR_FATAL,__FILE__,__LINE__,"数据库连接参数不足! SYS_ERR_CODE=[%d]",DB_VAR_ERR);
                return DB_VAR_ERR;
        }

        EXEC SQL  CONNECT :user_sid IDENTIFIED BY :db_pwd;
        if (SQLCODE)
        {
                if (connect_count < CONNECT_COUNT)
                {
                        LOG(ERR_FATAL,__FILE__,__LINE__,"连接数据库失败! 连接次数 [%d]  DB_ERR_CODE=[%d]  DB_ERR_MSG=[%s]",
                                                        connect_count+1,SQLCODE,SQLERRMSG);
                        sleep(DB_CONNECT_TIME);
                        connect_count++;
                        db_connec(db_conn);
                }
                else
                {
                        LOG(ERR_FATAL,__FILE__,__LINE__,"连接数据库已超过规定[%d]次!本次调用失败!",connect_count);
                        return SYS_DB_CONNECT_ERR;
                }
        }
        return SQLCODE;
}

论坛徽章:
0
4 [报告]
发表于 2010-03-23 17:56 |只看该作者
proc是什么?

论坛徽章:
0
5 [报告]
发表于 2010-03-24 09:58 |只看该作者
加上sid果然成功了,多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP