数据库 proc编程九
第一种动态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编程九的更多相关文章
- 数据库 Proc编程二
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程六
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程五
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程四
错误处理机制 当在Pro*C/C++应用程序中运行SQL语句中,Oracle会将最近执行的SQL语句的状态信息存储到状态变量SQLCODE.SQLSTATE或者SQLCA结构中. 当SQL语句执行成功 ...
- 数据库 proc编程八
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程七
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 数据库 proc编程三
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- Oracle Proc编程性能优化经验
Proc 是Oracle提供的一种数据库操作的API.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一 ...
- 不为人知的网络编程(九):理论联系实际,全方位深入理解DNS
本文原作者:selfboot,博客地址:selfboot.cn,Github地址:github.com/selfboot,感谢原作者的技术分享. 1.引言 对于 DNS(Domain Name Sys ...
随机推荐
- mongodb win7 32位系统安装以及配置
今天安装 win7 32位系统 mongodb 费了好大劲..记录一下,希望相同的同学可以少踩点坑. 1.安装 我安装的是3.2.4 地址:http://downloads.mongodb.org/ ...
- 如何查看域名解析是否生效--windows命令
- spring mvc get方式乱码
使用spring get方式,向后台传递参数的时候,出现乱码,网上搜索了好久,最后发现原因是server.xml中默认的配置有问题,修改如下就正确了,图片: 文本信息: <Connect ...
- GPS轨迹数据集免费下载资源整理
https://blog.csdn.net/liangyihuai/article/details/58335510
- NEXYS 3开发板练手--LED与数码管时钟
做科研的时候从学校拿到一块基于Xilinx公司Spartan-6主芯片的FPGA开发板,因为之前一直在用Altera公司的FPGA,一开始接触它还真有点不太习惯.但毕竟核心的东西还是不会变的,于是按照 ...
- nyoj116 士兵杀敌(二)树状数组 插点问线
士兵杀敌(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 南将军手下有N个士兵,分别编号1到N,这些士兵的杀敌数都是已知的. 小工是南将军手下的军师,南将军经常想知 ...
- 利用ForgeryPy生成虚拟数据
在程序研发过程中,我们往往需要大量的虚拟实验数据.Python中有多个包可以用于生成虚拟数据,其中功能较为完善的是ForgeryPy. 1 安装 采用pip进行安装: pip install Forg ...
- org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xm
org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xm 检查jar包是否正确以及配置的xm ...
- WCF寄宿到Windows Service
WCF寄宿到Windows Service[1] 2014-06-14 WCF寄宿到Windows Service参考 WCF寄宿到Windows Service 返回 在前面创建一个简单的WCF程序 ...
- filebeat+kafka+SparkStreaming程序报错及解决办法
// :: WARN RandomBlockReplicationPolicy: Expecting replicas with only peer/s. // :: WARN BlockManage ...