codecamp

PostgreSQL ECPG — C中的嵌入式 SQL

目录

35.1. 概念
35.2. 管理数据库连接
35.2.1. 连接到数据库服务器
35.2.2. 选择一个连接
35.2.3. 关闭一个连接
35.3. 运行 SQL 命令
35.3.1. 执行 SQL 语句
35.3.2. 使用游标
35.3.3. 管理事务
35.3.4. 预备语句
35.4. 使用主变量
35.4.1. 概述
35.4.2. 声明小节
35.4.3. 检索查询结果
35.4.4. 类型映射
35.4.5. 处理非简单 SQL 数据类型
35.4.6. 指示符
35.5. 动态 SQL
35.5.1. 执行没有结果集的语句
35.5.2. 执行一个有输入参数的语句
35.5.3. 执行一个有结果集的语句
35.6. pgtypes 库
35.6.1. 字符串
35.6.2. numeric类型
35.6.3. 日期类型
35.6.4. 时间戳类型
35.6.5. 区间类型
35.6.6. decimal类型
35.6.7. pgtypeslib 的 errno 值
35.6.8. pgtypeslib 的特殊常量
35.7. 使用描述符区域
35.7.1. 命名 SQL 描述符区域
35.7.2. SQLDA 描述符区域
35.8. 错误处理
35.8.1. 设置回调
35.8.2. sqlca
35.8.3. SQLSTATESQLCODE
35.9. 预处理器指令
35.9.1. 包括文件
35.9.2. define 和 undef 指令
35.9.3. ifdef, ifndef, elif, else, 和 endif 指令
35.10. 处理嵌入式 SQL 程序
35.11. 库函数
35.12. 大对象
35.13. C++ 应用
35.13.1. 主变量的可见范围
35.13.2. 使用外部 C 模块的 C++ 应用开发
35.14. 嵌入式 SQL 命令
ALLOCATE DESCRIPTOR — 分配一个 SQL 描述符区域
CONNECT — 建立一个数据库连接
DEALLOCATE DESCRIPTOR — 释放一个 SQL 描述符区域
DECLARE — 定义一个游标
DESCRIBE — 得到有关一个预备语句或结果集的信息
DISCONNECT — 终止一个数据库连接
EXECUTE IMMEDIATE — 动态地准备和执行一个语句
GET DESCRIPTOR — 从一个 SQL 描述符区域得到信息
OPEN — 打开一个动态游标
PREPARE — 准备一个语句用于执行
SET AUTOCOMMIT — 设置当前会话的自动提交行为
SET CONNECTION — 选择一个数据库连接
SET DESCRIPTOR — 在一个 SQL 描述符区域中设置信息
TYPE — 定义一种新数据类型
VAR — 定义一个变量
WHENEVER — 指定一个要在一个 SQL 语句导致发生一个特定类别的情况时要采取的动作
35.15. Informix兼容模式
35.15.1. 附加类型
35.15.2. 附加的/缺少的 嵌入式 SQL 语句
35.15.3. Informix-兼容的 SQLDA 描述符区域
35.15.4. 附加函数
35.15.5. 额外的常量
35.16. 内部

这一章描述了用于PostgreSQL的嵌入式SQL包。它由 Linus Tolke(<linus@epact.se>)和 Michael Meskes(<meskes@postgresql.org>)编写。最初它是为了与C一起工作而编写的。它也能与C++配合,但是它还不识别所有的C++结构。

这份文档还远没有完成。但是因为这个结构是标准化的,额外的信息可以在有关 SQL 的很多资源中找到。


PostgreSQL 例子程序
PostgreSQL 概念
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }