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

    第一种动态sql
    EXEC SQL EXECUTE IMMEDIATE :psql;
    1.仅适用于非select语句
    2.嵌入SQL语句中不能包含输入宿主变量
    void main()
    {
        EXEC SQL WHENEVER SQLERROR DO sqlerr();
        EXEC SQL connect:serverid ;
        printf("connect ok!
    ");
        char buf[100]={0};
        while(1)
        {
            memset(buf,0,sizeof(buf));
            memset(psql,0,sizeof(psql));
            printf("
     SQL:");
            gets(buf);
            if(buf[0]=='0')
            {
                break;
            }
            strcpy(psql,buf);
            //动态sql第一种
            EXEC SQL EXECUTE IMMEDIATE :psql;
            EXEC SQL COMMIT;
            printf("SQL 语句执行成功 !
    ");
        }
        //提交断开连接
        EXEC SQL COMMIT RELEASE;
        system("pause");
    }
    第二种动态sql
    EXEC SQL PREPARE 标识符 FROM 'SQL语句';
    EXEC SQL EXECUTE 标识符 USING 宿主变量1,宿主变量2;
    1.仅适用于非select语句
    2.嵌入SQL语句中可以包含输入宿主变量和指示变量,其个数和类型在预编译时已知。
    void main()
    {
        EXEC SQL WHENEVER SQLERROR DO sqlerr();
        EXEC SQL connect:serverid ;
        printf("connect ok!
    ");
        while(1)
        {
            memset(name1,0,sizeof(name1));
            printf("
     请输入要修改的ida的ID:");
            scanf("%d",&ida1);
            getchar();
            printf("
     请输入要修改的name的值:");
            gets(name1);
            if(ida1==0)
            {
                break;
            }
            //动态sql第二种
            //准备固定的sql语句
            //mypresql:准备sql语句的标识符
            //:a和:b :并非宿主变量,而是一个占位符
            EXEC SQL PREPARE mypresql FROM 'update t2 set name=:a where ida=:b';
            //执行动态sql
            EXEC SQL EXECUTE mypresql USING :name1,:ida1;
    
            EXEC SQL COMMIT;
            printf("SQL 语句执行成功 !
    ");
        }
        //提交断开连接
        EXEC SQL COMMIT RELEASE;
        system("pause");
    }
    第三种动态sql
    1.输入宿主变量个数固定 查询条件固定
    2.输出宿主变量个数固定 返回结果固定
    void main()
    {
        EXEC SQL WHENEVER SQLERROR DO sqlerr();
        EXEC SQL connect:serverid ;
        printf("connect ok!
    ");
        while(1)
        {
            memset(name1,0,sizeof(name1));
            printf("
     请输入要查询的name的值:");
            gets(name1);
            if(name1[0]=='0')
            {
                break;
            }
            //动态sql第三种
            //准备固定的sql语句
            //mypresql:准备sql语句的标识符
            //:a和:b :并非宿主变量,而是一个占位符
            EXEC SQL PREPARE mypresql FROM 'select ida,idb,name from t2 where name=:a';
            //定义游标
            EXEC SQL DECLARE c CURSOR FOR mypresql;
            //打开游标,传入参数
            EXEC SQL OPEN c USING :name1;
            //查询数据
            EXEC SQL WHENEVER NOT FOUND DO BREAK;
            while(1)
            {
                exec sql fetch c into :ida2,:idb2,:name2:name2_ind;
                if(name2_ind==-1)
                {
                    memset(name2,0,sizeof(name2));
                    strcpy(name2,"null");
                }
                printf("ida=%d,idb=%d,name=%s
    ",ida2,idb2,name2);
            }
            //关闭游标
            EXEC SQL CLOSE c;
        }
        //提交断开连接
        EXEC SQL COMMIT RELEASE;
        system("pause");
    }
  • 相关阅读:
    在Ubuntu中通过update-alternatives切换软件版本
    SCons: 替代 make 和 makefile 及 javac 的极好用的c、c++、java 构建工具
    mongodb 的使用
    利用grub从ubuntu找回windows启动项
    How to Repair GRUB2 When Ubuntu Won’t Boot
    Redis vs Mongo vs mysql
    java script 的工具
    python 的弹框
    how to use greendao in android studio
    python yield的终极解释
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/6284221.html
Copyright © 2011-2022 走看看