第一种动态sql
EXEC SQL EXECUTE IMMEDIATE :psql;
.仅适用于非select语句
.嵌入SQL语句中不能包含输入宿主变量
void main()
{
EXEC SQL WHENEVER SQLERROR DO sqlerr();
EXEC SQL connect:serverid ;
printf("connect ok!\r\n");
char buf[]={};
while()
{
memset(buf,,sizeof(buf));
memset(psql,,sizeof(psql));
printf("\r\n SQL:");
gets(buf);
if(buf[]=='')
{
break;
}
strcpy(psql,buf);
//动态sql第一种
EXEC SQL EXECUTE IMMEDIATE :psql;
EXEC SQL COMMIT;
printf("SQL 语句执行成功 !\r\n");
}
//提交断开连接
EXEC SQL COMMIT RELEASE;
system("pause");
}
第二种动态sql
EXEC SQL PREPARE 标识符 FROM 'SQL语句';
EXEC SQL EXECUTE 标识符 USING 宿主变量1,宿主变量2;
.仅适用于非select语句
.嵌入SQL语句中可以包含输入宿主变量和指示变量,其个数和类型在预编译时已知。
void main()
{
EXEC SQL WHENEVER SQLERROR DO sqlerr();
EXEC SQL connect:serverid ;
printf("connect ok!\r\n");
while()
{
memset(name1,,sizeof(name1));
printf("\r\n 请输入要修改的ida的ID:");
scanf("%d",&ida1);
getchar();
printf("\r\n 请输入要修改的name的值:");
gets(name1);
if(ida1==)
{
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 语句执行成功 !\r\n");
}
//提交断开连接
EXEC SQL COMMIT RELEASE;
system("pause");
}
第三种动态sql
.输入宿主变量个数固定 查询条件固定
.输出宿主变量个数固定 返回结果固定
void main()
{
EXEC SQL WHENEVER SQLERROR DO sqlerr();
EXEC SQL connect:serverid ;
printf("connect ok!\r\n");
while()
{
memset(name1,,sizeof(name1));
printf("\r\n 请输入要查询的name的值:");
gets(name1);
if(name1[]=='')
{
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()
{
exec sql fetch c into :ida2,:idb2,:name2:name2_ind;
if(name2_ind==-)
{
memset(name2,,sizeof(name2));
strcpy(name2,"null");
}
printf("ida=%d,idb=%d,name=%s\r\n",ida2,idb2,name2);
}
//关闭游标
EXEC SQL CLOSE c;
}
//提交断开连接
EXEC SQL COMMIT RELEASE;
system("pause");
}

数据库 proc编程九的更多相关文章

  1. 数据库 Proc编程二

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  2. 数据库 proc编程六

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  3. 数据库 proc编程五

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  4. 数据库 proc编程四

    错误处理机制 当在Pro*C/C++应用程序中运行SQL语句中,Oracle会将最近执行的SQL语句的状态信息存储到状态变量SQLCODE.SQLSTATE或者SQLCA结构中. 当SQL语句执行成功 ...

  5. 数据库 proc编程八

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  6. 数据库 proc编程七

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  7. 数据库 proc编程三

    #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...

  8. Oracle Proc编程性能优化经验

    Proc 是Oracle提供的一种数据库操作的API.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一 ...

  9. 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS

    本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...

随机推荐

  1. FA_手工明细增加固定资产(流程)

    2014-06-08 Created By BaoXinjian

  2. C++第15周(春)项目2 - 用文件保存的学生名单

    课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 本程序中须要的相关文件.请到http://pa ...

  3. STM32 SPI接口的NSS引脚

    SPI_NSS 设置 NSS 信号由硬件( NSS 管脚)还是软件控制,这里我们一般通过软件控制 NSS ,而不是硬件自动控制,所以选择 SPI_NSS_Soft 选择了软件NSS之后,引脚NSS就可 ...

  4. 使用dockerfile 构建springboot 的docker镜像

    1 新建一个 springboot 项目,并将其打包成 jar 文件.生成demo1.jar 文件 请参考 使用springBoot搭建REATFul风格的web demo 2 编写 dockerfi ...

  5. django中templates阅读笔记

    一.基本知识 1.模版是独立于django的,可以独立运行. 模版变量是用两个大括号括起来的字符串,表示变量.例如{{ person_name }} 模版标签,是用一对大括号和一对百分号括起来的,例如 ...

  6. javascript ES6模块化

    一.将模块导出去 /* *将模块导出去 *a.js文件 */ const a=12; export default a; /* *将模块导出去 *b.js文件 */ const a=5; export ...

  7. [Codility] CommonPrimeDivisors

    A prime is a positive integer X that has exactly two distinct divisors: 1 and X. The first few prime ...

  8. Let's call it a "return"

    Preface Long time no see. For some reason that I failed to keep updating this blog, which is really ...

  9. 关于Xilinx MicroBlaze应用modelsim se仿真问题(EDK:3593 - Unable to locate the precompiled library microblaze_v8_50_c)

    ERROR:EDK:3593 - Unable to locate the precompiled library microblaze_v8_50_c. The file D:\Xilinx\14. ...

  10. sudo apt-get update 时出现的hit、ign、get的含义

    hit,命中表示链接上这个网站 get获取表示有更新并且下载, ign忽略表示无更新或者更新无关紧要或者不需要,譬如某些插件系统已经有了或者语言翻译包