嵌入式动态SQL
2015-11-27 16:39
239 查看
1.表管理
表创建,表删除,表修改,无动态输入条件即无宿主变量参与。
例如创建表ln001
EXEC SQL EXECUTE IMMEDIATE "CREATE TABLE ln001 (name VARCHAR(20), sex char(2),certinum varchar(18))" ;
2.表查询
2.1 有固定有效查询条件,无取值操作。
PREPARE,EXECUTE 用法:
EXEC SQL BEGIN DECLARE SECTION;
char sql[256+1];
EXEC SQL END DECLARE SECTION;
memset(sql,0x00,sizeof(sql));
sprintf(sql," delete *from ln001 where certinum='%s' ",certinum);
EXEC SQL PREPARE sql_pre FROM :sql;
EXEC SQL EXECUTE sql_pre;
if(SQLCODE && SQLCODE!=100)
{
PRINTF(__FILE__,__LINE__,"执行sql出错SQLCODE[%d]",SQLCODE);
return -1;
}
2.2 有不定项可选查询条件取多条数据,取值到宿主变量校验。
EXEC SQL BEGIN DECLARE SECTION;
char sql[256+1];
char name[40+1];
short id=0;
EXEC SQL END DECLARE SECTION;
memset(sql,0x00,sizeof(sql));
memset(name,0x00,sizeof(name));
strcpy(sql,"select name from ln001 where 1=1 ");
if(strlen(certinum)>0)
{
sprintf(sql," %s and certinum='%s' ",sql,argv[1]);
}
if(strlen(sex)>0)
{
sprintf(sql," %s and sex='%s' ",sql,argv[2]);
}
EXEC SQL PREPARE sql_pre FROM :sql;
EXEC SQL DECLARE SQL_CUR CURSOR FOR sql_pre;
if(SQLCODE)
{
}
EXEC SQL OPEN SQL_CUR;
if(SQLCODE)
{
}
WHILE(1)
{
EXEC SQL FETCH SQL_CUR INTO:certinum:id;
if(SQLCODE && SQLCODE!=100)
{
PRINTF(__FILE__,__LINE__,"执行sql出错SQLCODE[%d]",SQLCODE);
EXEC SQL CLOSE SQL_CUR;
return -1;
}
if(SQLCODE=100)
{
break;
}
}
EXEC SQL CLOSE SQL_CUR;
表创建,表删除,表修改,无动态输入条件即无宿主变量参与。
例如创建表ln001
EXEC SQL EXECUTE IMMEDIATE "CREATE TABLE ln001 (name VARCHAR(20), sex char(2),certinum varchar(18))" ;
2.表查询
2.1 有固定有效查询条件,无取值操作。
PREPARE,EXECUTE 用法:
EXEC SQL BEGIN DECLARE SECTION;
char sql[256+1];
EXEC SQL END DECLARE SECTION;
memset(sql,0x00,sizeof(sql));
sprintf(sql," delete *from ln001 where certinum='%s' ",certinum);
EXEC SQL PREPARE sql_pre FROM :sql;
EXEC SQL EXECUTE sql_pre;
if(SQLCODE && SQLCODE!=100)
{
PRINTF(__FILE__,__LINE__,"执行sql出错SQLCODE[%d]",SQLCODE);
return -1;
}
2.2 有不定项可选查询条件取多条数据,取值到宿主变量校验。
EXEC SQL BEGIN DECLARE SECTION;
char sql[256+1];
char name[40+1];
short id=0;
EXEC SQL END DECLARE SECTION;
memset(sql,0x00,sizeof(sql));
memset(name,0x00,sizeof(name));
strcpy(sql,"select name from ln001 where 1=1 ");
if(strlen(certinum)>0)
{
sprintf(sql," %s and certinum='%s' ",sql,argv[1]);
}
if(strlen(sex)>0)
{
sprintf(sql," %s and sex='%s' ",sql,argv[2]);
}
EXEC SQL PREPARE sql_pre FROM :sql;
EXEC SQL DECLARE SQL_CUR CURSOR FOR sql_pre;
if(SQLCODE)
{
}
EXEC SQL OPEN SQL_CUR;
if(SQLCODE)
{
}
WHILE(1)
{
EXEC SQL FETCH SQL_CUR INTO:certinum:id;
if(SQLCODE && SQLCODE!=100)
{
PRINTF(__FILE__,__LINE__,"执行sql出错SQLCODE[%d]",SQLCODE);
EXEC SQL CLOSE SQL_CUR;
return -1;
}
if(SQLCODE=100)
{
break;
}
}
EXEC SQL CLOSE SQL_CUR;
相关文章推荐
- T-SQL - 同表中,以某一列聚合,详细聚合信息在一列显示
- 2.redis学习笔记:redis List底层数据实现(通用双端链表)
- Redis入门,集群安装
- VS2013连接mysql数据库
- mysql 主从数据库备份与读写分离中间件比较(TDDL、Amoeba、Cobar、MyCat)
- 数据库的垂直切分和水平切分
- redis优化配置和redis.conf说明
- MySQL垂直和水平切分
- 从C#中通过Windows窗体添加信息到数据库 (添加学生信息)
- MySQL 迁移 Oracle 工具SQL Developer
- JSP+Servlet+mysql简单示例【图文教程】
- sql service添加索引
- MySQL学习7-数据库理论-几大范式
- SSH:Hibernate框架(Hibernate数据库事务与隔离级别)
- 插入Mysql时中文乱码解决方案
- SSH:Hibernate框架(Hibernate:HQL与QBC查询方式详解 )
- Oracle的rman备份与恢复
- MySQL学习6-编码方式-UTF8-GBK-ANSI-Unicode-GB2312-base64
- sql 更新某列的值为 row_number 查出的值
- Redis Java客户端实例