第一种动态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. 调用oracle 各种报错总结---待续

    ORA-01747: user.table.column, table.column 或列说明无效 原因之一是sql语句拼接错误,多了逗点:二是使用到了oracle的关键字所致 ORA-02449: ...

  2. android侧滑效果,SlidingMenu配置

    最近开始做点东西,需要用到android activity侧滑的效果.感觉配置起来还是有点小麻烦,总结一下以便回顾. 需要的东西: 1.SlidingMenu项目:点击打开链接 2.ActionBar ...

  3. 统一日志监控系统 springboot websocket 简单版 王代军-作品

    http://git.oschina.net/redArmy/springboot-websocket-logs 目的: 统一监控 开发测试环境日志 如果需要可以拓展线上环境的日志(自己视情况而定) ...

  4. Vagrant安装指南

    ubuntu的易用性很高,安装很简单,颜值也高,但是我工作中经常使用centos,我希望我的笔记本也是centos,但是,centos颜值太低,配置文件很复杂,不想弄这个太麻烦,于是,我想到了Vagr ...

  5. Avoid strong reference cycles

    转自:http://masteringios.com/blog/2014/03/06/avoid-strong-reference-cycles/ With the introduction of A ...

  6. 教你轻松自己定义ViewPagerIndicator

    ViewPagerIndicator集成分页指示器.事实上就是标题栏和ViewPager的联动效果,大家先看一下效果图直观了解:(图侵删) 这篇文章将会教大家怎么简单高速地制作自己的ViewPager ...

  7. 关于haproxy负载均衡的算法整理

    目前haproxy支持的负载均衡算法有如下8种: 1:roudrobin 表示简单的轮询,每个服务器根据权重轮流使用,在服务器的处理时间平均分配的情况下这是最流畅和公平的算法.该算法是动态的,对于实例 ...

  8. android framework-下载Android系统源代码

    □ apt-get install git-core curl #先下载这两个工具 □ mkdir android-froyo #建立下载目录 □ cd android-froyo #进入下载目录 □ ...

  9. ControlExtensionTest(二)-----CCControlSlider

    #include "../CCControlScene.h" class CCControlSliderTest : public CCControlScene { public: ...

  10. sass & compass 实战录

    一.sass 是什么 Css的一种预处理器 是基于css进行语法扩展而成 主要目的是为了提高开发效率,弥补css语法不足的缺陷 同样流行的预处理器还有:less.stylus 二.SASS的基本语法 ...