zoukankan      html  css  js  c++  java
  • 数据库 proc编程六

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include "sqlca.h"
    
    //指示变量:用来对宿主变量做说明
    //指示变量作输入:表示宿主变量是空值
    //指示变量做输出:当值-1,表示返回的变量是空值
    //语法格式:宿主变量 [indicator] 指示变量            其中indicator关键字可加可不加
    //eg::name1 indicator :name_ind
    
    EXEC SQL BEGIN DECLARE SECTION;
        char *serverid="scott/123456@orcl";
    
        int ida1[10];
        int idb1[10];
        varchar name1[10][20];
        short name_ind[10];//定义指示变量,必须是short宿主类型
    
        int ida2;
        int idb2;
        varchar name2[20];
        short name2_ind;//定义指示变量,做输入
    EXEC SQL END DECLARE SECTION;
    
    int sqlgls(void *,void *,void *);
    
    //错误处理升级函数
    void sqlerr()
    {
        int ret=0;
        char stn[120];
        //sqlfc:SQL语句的实际长度
        size_t sqlfc,stmlen=120;
        EXEC SQL WHENEVER SQLERROR CONTINUE;
        ret=sqlgls(stn,&stmlen,&sqlfc);
        if(ret!=0)
        {
            printf("sqlgls() failed ! err code: %d
    ",ret);
            return ;
        }
        printf("出错的SQL语句是:%.*s
    ",stmlen,stn);
        printf("err reason:%.*s
    ",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
        EXEC SQL ROLLBACK WORK RELEASE;
    }
    
    void main()
    {
        EXEC SQL WHENEVER SQLERROR DO sqlerr();
        EXEC SQL connect:serverid ;
        printf("connect ok!
    ");
        //指示变量做输入,插入空值数据
        ida2=34;
        idb2=12;
        //注意:就算设置了指示变量的值不是-1,宿主变量也会变成空值存入数据库
        name2_ind=10;
        exec sql insert into t2 values(:ida2,:idb2,:name2:name2_ind);
        //提交事务
        EXEC SQL COMMIT;
        getchar();
        EXEC SQL WHENEVER NOT FOUND CONTINUE;
        //指示变量做输出
        EXEC SQL select ida,idb,name into :ida1,:idb1,:name1:name_ind from t2;
        //sqlca.sqlerrd[2]获取SQL语句查询到的记录数
        int count=sqlca.sqlerrd[2];
        //终端打印数据
        int i=0;
        for(i=0;i<count;i++)
        {
            if(name_ind[i]==-1)
            {
                printf("第%d条:ida1=%d,idb1=%d,name1=%s
    ",i,ida1[i],idb1[i],"空值");
            }else
            {
                printf("第%d条:ida1=%d,idb1=%d,name1=%s
    ",i,ida1[i],idb1[i],name1[i].arr);
            }
            
        }
        //提交断开连接
        EXEC SQL COMMIT RELEASE;
        system("pause");
    }
  • 相关阅读:
    TBDR下msaa 在metal vulkan和ogles的解决方案
    Load store action in vulkan & ogles 的解决方案
    百度 我日你全家
    metal sample code
    NativeRenderingPlugin IOS
    ranch实现游戏服务器
    erlang游戏开发tcp
    Erlang 命令行监控工具
    rebar安装及创建项目
    erlang中如何调试程序
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/6282391.html
Copyright © 2011-2022 走看看