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");
    }
  • 相关阅读:
    上班啦!
    用命令测试maven是否安装成功和创建maven java项目和maven javaweb 项目demo
    String部分
    将Linux虚拟机与本地主机组成局域网
    Maven部分
    JavaSe一个月一些笔记和感想
    Linux一些指令
    maven项目编译后没有生成target/class文件部分解决方案
    7、学习《细说PHP》笔记 七
    12、borderstyle样式边框风格属性
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/6284221.html
Copyright © 2011-2022 走看看