第一种动态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. PO_本地一揽子采购协议(流程)

    2014-06-04 Created By BaoXinjian

  2. 线程的属性和 线程特定数据 Thread-specific Data

    一.posix 线程属性 POSIX 线程库定义了线程属性对象 pthread_attr_t ,它封装了线程的创建者可以访问和修改的线程属性.主要包括如下属性: 1. 作用域(scope) 2. 栈尺 ...

  3. firefox os 会不会是未来移动平板及电视之星

    随着2013年第一款firefox os 手机问世以来.Firefox os 系统手机已经经历过几次系统的更新,如今最新版本号的firefox os 为2.0版本号,只是如今的最新版本号还不是非常稳定 ...

  4. [转]Win7独立语言包下载

    想找个语言包太不容易了 ,全是旧版的,最后不得以...在国外网站找到了下载地址,全部是最新的语言包!自己找对应语言的缩写吧 64-bit (x64) Windows 7 SP1: http://dow ...

  5. spring boot实战读书笔记1

    1 覆盖起步依赖引入的传递依赖. 以Spring Boot的Web起步依赖为例,它传递依赖了Jackson JSON库.如果不想使用,可以使用 <exclusions>元素去除Jackso ...

  6. php长链接

    php 连接 mysql 是分为两步走的第一步:建立 php 到 mysql 服务器的 tcp/ip 通道 物理通道第二步:登录 mysql 服务器,建立到数据库的通道 逻辑通道 无论是长连接还是短连 ...

  7. PHP采集库-Snoopy.class.php

    Snoopy是一个php类,用来模拟浏览器的功能,可以获取网页内容,发送表单. Snoopy的特点: 1.抓取网页的内容 fetch 2.抓取网页的文本内容 (去除HTML标签) fetchtext ...

  8. SVN配置钩子

    安装测试环境:109  CentOS4.6 安装: SVN1.32http://subversion.tigris.org/downloads/subversion-1.3.2.tar.gz安装:解压 ...

  9. 在 Windows 8 中启用可匿名访问的共享

    就是不用输入用户名和密码,直接通过网上邻居可以访问的共享. 1.打开本地组策略编辑器(快捷键Win+R,打开运行,输入gpedit.msc,确定): 2.打开:"本地计算机策略->计算 ...

  10. 摘记—Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Cha

    What a Unicode string ? The binaries in RAM have the final word. NOT string literals in Text Editor( ...