数据库 proc编程六

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "sqlca.h"

//指示变量:用来对宿主变量做说明
//指示变量作输入:当值-1,表示宿主变量是空值
//指示变量做输出:当值-1,表示返回的变量是空值
//语法格式:宿主变量 [indicator] 指示变量            其中indicator关键字可加可不加
//eg::name1 indicator :name_ind

EXEC SQL BEGIN DECLARE SECTION;
    char *serverid="scott/[email protected]";

    int ida1[10];
    int idb1[10];
    varchar name1[10][20];
    short name_ind[10];//定义指示变量,必须是short宿主类型
EXEC SQL END DECLARE SECTION;

//错误处理升级函数
void sqlerr()
{
    int ret=0;
    char stn[120];
    //sqlfc:SQL语句的实际长度
    size_t sqlfc,stmlen=120;
    EXEC SQL WHENEVER SQLERROR CONTINUE;
    ret=sqlgls(stn,&stmlen,&sqlfc);
    if(ret!=0)
    {
        printf("sqlgls() failed ! err code: %d\r\n",ret);
        return ;
    }
    printf("出错的SQL语句是:%.*s\r\n",stmlen,stn);
    printf("err reason:%.*s\r\n",sqlca.sqlerrm.sqlerrml,sqlca.sqlerrm.sqlerrmc);
    EXEC SQL ROLLBACK WORK RELEASE;
}

void main()
{
    EXEC SQL WHENEVER SQLERROR DO sqlerr();
    EXEC SQL connect:serverid ;
    printf("connect ok!\r\n");
    EXEC SQL WHENEVER NOT FOUND CONTINUE;
    EXEC SQL select ida,idb,name into :ida1,:idb1,:name1:name_ind from t2;
    //sqlca.sqlerrd[2]获取SQL语句查询到的记录数
    int count=sqlca.sqlerrd[2];
    //终端打印数据
    int i=0;
    for(i=0;i<count;i++)
    {
        if(name_ind[i]==-1)
        {
            printf("第%d条:ida1=%d,idb1=%d,name1=%s\r\n",i,ida1[i],idb1[i],"空值");
        }else
        {
            printf("第%d条:ida1=%d,idb1=%d,name1=%s\r\n",i,ida1[i],idb1[i],name1[i].arr);
        }

    }
    //提交断开连接
    EXEC SQL COMMIT RELEASE;
    system("pause");
}
时间: 2024-08-06 03:42:55

数据库 proc编程六的相关文章

数据库 Proc编程二

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include "sqlca.h" //连接数据库 /* EXEC SQL CONNECT {:user IDENTIFIED BY :oldpswd | :usr_psw } [[AT { dbname | :host_variable }] USING :conne

数据库 proc编程九

第一种动态sql EXEC SQL EXECUTE IMMEDIATE :psql; 1.仅适用于非select语句 2.嵌入SQL语句中不能包含输入宿主变量 void main() { EXEC SQL WHENEVER SQLERROR DO sqlerr(); EXEC SQL connect:serverid ; printf("connect ok!\r\n"); char buf[100]={0}; while(1) { memset(buf,0,sizeof(buf));

Oracle Proc编程性能优化经验

Proc 是Oracle提供的一种数据库操作的AP.它是基于ESql技术的,需要预编译后才可以变成普通c代码,非常不直观,使用起来不太方便,阅读也存在困难. 因为这些问题导致程序员平时开发中会出现一些Proc操作存在效率低下的情况,本文介绍一些Proc一些编译经验,希望能给大家提供参考. 下面以一个简单需求进行举例说明: 要求把DB1里面一张数据表tbl_hch_test的数据导出到DB2的同名表. 最快的方法当然是使用oracle的数据泵工具进行压缩导出再导入,但expdp/impdp对数据库

第八章、数据库后台编程技术

第八章.数据库后台编程技术 内容提要: 1.掌握存储过程的定义与使用 2.掌握用户定义函数的创建与使用 3.掌握触发器的定义与使用 4.掌握游标的定义与使用 第一节 存储过程 1.基本概念 使用T-SQL语言编写代码时,有两种方式存储和执行代码: (1)在客户端存储代码,通过客户端程序或SQL命令向DBMS发出操作请求,由DBMS将结果返回给用户程序. (2)以子程序的形式将程序模块存储在数据库中,供有权限的用户通过调用反复执行. 存储过程:即存储在数据库中供所有用户程序调用的子程序. 存储过程

iOS网络编程(六) NSURLSession详解

昨夜浏览Demo的时候,看到别人请求网络数据用的是NSURLSession,当时就在想这里什么,怎么没有用过,引起了我的好奇心,遂去百度-谷歌-官方文档一一查看,有了一定的了解,原来NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的. 查找资料,写了一个小Demo,大家可以看看,有什么不足的地方,可以留言帮我指出来. // // HMTRootViewController.m // // // Created by HMT on 14-6-7.

Win32 Windows编程 六

WM_PAINT消息 1 WM_PAINT 由于窗口的互相覆盖等,产生需要绘制的区域, 那么会产生WM_PAINT消息.一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘制区域来产生 WM_PAINT消息 例如可以使用 InvalidateRect 声明一个需要重新绘制的区域 BOOL InvalidateRect( HWND hWnd, // handle to window CONST RECT* lpRect, // rectangle coordinates BOOL bE

Manual | BSD手册| Linux手册 | 数据库手册 | 编程开发手册 | WEB开发手册 | 软件应用手册 | 网络技术手册 | GNU手册

豆豆手册 □ BSD手册 □ Linux手册 □ 数据库手册 □ 编程开发手册 □ WEB开发手册 □ 软件应用手册 □ 网络技术手册 □ GNU手册 在线手册 首 页 BSD手册 ·FreeBSD Handbook 简体中文版 ·NetBSD Internals ·NetBSD 指导手册 ·FreeBSD Porter 手册 ·FREEBSD 使用者手册 ·FreeBSD 5.x 架设管理与应用 ·FreeBSD 6.0架设管理与应用 ·OpenBSD FAQ中文版 Linux手册 ·Turb

数据库 Proc编程一

proc编程 嵌入式sql:sql写入到C语言程序中 proc编程头文件路径 app\xxx\product\11.2.0\dbhome_1\precomp\public proc编程要注意proc编译器也会使用gcc编译器中的头文件,所以需要在proc编译器中进行配置,加上系统的头文件路径 配置文件路径是:app\xxx\product\11.2.0\dbhome_1\precomp\admin\pcscfg.cfg proc开发流程 1.proc工具预编译 *.pc==>.c proc编译选

MySQL数据库基础(六)——SQL插入、更新、删除操作

MySQL数据库基础(六)--SQL插入.更新.删除操作 一.插入数据 1.为表的所有字段插入数据 使用基本的INSERT语句插入数据要求指定表名称和插入到新记录中的值. INSERT INTO table_name (column_list) VALUES (value_list); insert into `TSubject` (subjectID,subjectName,BookName,Publisher) values ('0004','英语','大学英语走遍美国','清华出版社')