- 浏览: 1552439 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (532)
- 软件设计师 (7)
- PSP (5)
- NET MD (9)
- Hibernate (8)
- DIY (51)
- Work (43)
- GAME (24)
- 未分类 (44)
- iPod (6)
- MySQL (39)
- JSP (7)
- 日语能力考试 (36)
- 小说 (4)
- 豆包网 (23)
- 家用电脑 (7)
- DB2 (36)
- C/C++ (18)
- baby (9)
- Linux (13)
- thinkpad (23)
- OA (1)
- UML (6)
- oracle (24)
- 系统集成 (27)
- 脑梗塞 (6)
- 车 (8)
- MainFrame (8)
- Windows 7 (13)
- 手机 (8)
- git (12)
- AHK (2)
- COBOL (2)
- Java (9)
最新评论
-
安静听歌:
... ...
UUID做主键,好还是不好?这是个问题。 -
lehehe:
http://www.haoservice.com/docs/ ...
天气预报 -
lehehe:
[url http://www.haoservice.com/ ...
天气预报 -
liubang201010:
监控TUXEDO 的软件推荐用这个,专业,权威.并能提供报警和 ...
(转载)Tuxedo中间件简介 -
tinkame:
Next[j] =-1 当j=0时;=Max{k|0<k ...
KMP字符串模式匹配详解
DB2 通用数据库 iSeries 版 SQL 调用层接口(ODBC)
SQLPrepare — 准备语句
SQLPrepare() 使 SQL 语句与输入语句句柄相关联并将该语句发送至 DBMS 以进行准备。应用程序可以通过将该语句句柄传送给其它函数来引用这个准备好的语句。
如果已将语句句柄与 SELECT 语句配合使用,则在调用 SQLPrepare() 之前,必须调用 SQLFreeStmt() 来关闭游标。
语法
SQLRETURN SQLPrepare (SQLHSTMT hstmt,
SQLCHAR *szSqlStr,
SQLINTEGER cbSqlStr);
函数自变量
SQLHSTMT | hstmt | 输入 | 语句句柄。一定不能有打开的游标与 hstmt 相关联。 |
SQLCHAR * | szSqlStr | 输入 | SQL 语句字符串 |
SQLINTEGER | cbSqlStr | 输入 | szSqlStr 自变量的内容的长度。
必须将此长度设置为 szSqlstr 中的 SQL 语句的精确长度,或者,如果语句文本以空终止,则设置为 SQL_NTS。 |
用法
在使用 SQLPrepare() 准备语句之后,应用程序可通过调用下列函数来请求关于结果集的格式的信息(如果该语句是 SELECT 语句的话):
- SQLNumResultCols()
- SQLDescribeCol()
- SQLColAttributes()
可通过调用 SQLExecute() 来将准备好的语句执行一次或多次。在将该语句句柄与另一个SQLPrepare()、SQLExecDirect()、SQLColumns()、SQLSpecialColumns()、SQLStatistics() 或 SQLTables() 配合使用之前,该 SQL 语句将保持与该句柄相关联。
SQL 语句字符串可包含参数标记。参数标记由“?”字符表示,它用来指示语句中的一个位置,在调用 SQLExecute() 时,将在该位置替代应用程序变量的值。SQLBindParam() 用来将应用程序变量绑定到每个参数标记(使应用程序变量与参数标记相关联),以及指示在传送数据时是否应该执行任何数据转换。
SQL 语句不能是 COMMIT 或 ROLLBACK。必须通过调用 SQLTransact() 来发出 COMMIT 或 ROLLBACK。
如果 SQL 语句是定位型 DELETE 或定位型 UPDATE,则必须在同一个连接句柄下的单独语句句柄上定义该语句所引用的游标。
返回码
- SQL_SUCCESS
- SQL_SUCCESS_WITH_INFO
- SQL_ERROR
- SQL_INVALID_HANDLE
诊断
24000 | 游标状态无效 | 在指定的 hstmt 上存在打开的游标。 |
37xxx | 语法错误或访问违例 | szSqlStr 包含下列其中一项或多项:
|
HY001 | 内存分配失败 | 驱动程序无法分配支持此函数的执行或完成所必需的内存。 |
HY009 | 自变量值无效 | szSqlStr 是空指针。
自变量 cbSqlStr 小于 1,但不等于 SQL_NTS。 |
HY013 * | 内存管理问题 | 驱动程序无法访问支持此函数的执行或完成所必需的内存。 |
有关以下示例中使用的 check_error、initialize 和 terminate 函数的列表,请参考示例:交互式 SQL 和等价的 DB2 UDB CLI 函数调用。
/*************************************************************************
** file = prepare.c
**
** Example of preparing then repeatedly executing an SQL statement.
**
** Functions used:
**
** SQLAllocConnect SQLFreeConnect
** SQLAllocEnv SQLFreeEnv
** SQLAllocStmt SQLFreeStmt
** SQLConnect SQLDisconnect
**
** SQLBindCol SQLFetch
** SQLTransact SQLError
** SQLPrepare SQLSetParam
** SQLExecute
**************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "sqlcli.h"
#define MAX_STMT_LEN 255
int initialize(SQLHENV *henv,
SQLHDBC *hdbc);
int terminate(SQLHENV henv,
SQLHDBC hdbc);
int print_error (SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt);
int check_error (SQLHENV henv,
SQLHDBC hdbc,
SQLHSTMT hstmt,
SQLRETURN rc);
/*******************************************************************
** main
** - initialize
** - terminate
*******************************************************************/
int main()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLCHAR sqlstmt[MAX_STMT_LEN + 1]="";
SQLRETURN rc;
rc = initialize(&henv, &hdbc);
if (rc == SQL_ERROR) return(terminate(henv, hdbc));
{SQLHSTMT hstmt;
SQLCHAR sqlstmt[]="SELECT deptname, location from org where division = ?";
SQLCHAR deptname[15],
location[14],
division[11];
SQLINTEGER rlength,
plength;
rc = SQLAllocStmt(hdbc, &hstmt);
if (rc != SQL_SUCCESS )
check_error (henv, hdbc, SQL_NULL_HSTMT, rc);
/* prepare statement for multiple use */
rc = SQLPrepare(hstmt, sqlstmt, SQL_NTS);
if (rc != SQL_SUCCESS )
check_error (henv, hdbc, hstmt, rc);
/* bind division to parameter marker in sqlstmt */
rc = SQLSetParam(hstmt, 1, SQL_CHAR, SQL_CHAR, 10, 10, division,
&plength);
if (rc != SQL_SUCCESS )
check_error (henv, hdbc, hstmt, rc);
/* bind deptname to first column in the result set */
rc = SQLBindCol(hstmt, 1, SQL_CHAR, (SQLPOINTER) deptname, 15,
&rlength);
if (rc != SQL_SUCCESS )
check_error (henv, hdbc, hstmt, rc);
rc = SQLBindCol(hstmt, 2, SQL_CHAR, (SQLPOINTER) location, 14,
&rlength);
if (rc != SQL_SUCCESS )
check_error (henv, hdbc, hstmt, rc);
printf("\nEnter Division Name or 'q' to quit:\n");
printf("(Eastern, Western, Midwest, Corporate)\n");
gets(division);
plength = SQL_NTS;
while(division[0] != 'q')
{
rc = SQLExecute(hstmt);
if (rc != SQL_SUCCESS )
check_error (henv, hdbc, hstmt, rc);
printf("Departments in %s Division:\n", division);
printf("DEPTNAME Location\n");
printf("-------------- -------------\n");
while ((rc = SQLFetch(hstmt)) == SQL_SUCCESS)
{
printf("%-14.14s %-13.13s \n", deptname, location);
}
if (rc != SQL_NO_DATA_FOUND )
check_error (henv, hdbc, hstmt, rc);
SQLFreeStmt(hstmt, SQL_CLOSE);
printf("\nEnter Division Name or 'q' to quit:\n");
printf("(Eastern, Western, Midwest, Corporate)\n");
gets(division);
}
}
rc = SQLTransact(henv, hdbc, SQL_ROLLBACK);
if (rc != SQL_SUCCESS )
check_error (henv, hdbc, SQL_NULL_HSTMT, rc);
terminate(henv, hdbc);
return (0);
}/* end main */
参考
- SQLColAttributes — 列属性
- SQLDescribeCol — 描述列属性
- SQLExecDirect — 直接执行语句
- SQLExecute — 执行语句
- SQLNumResultCols — 获取结果列数
[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]
发表评论
-
(转)浅谈IBM DB2的数据库备份与恢复
2011-11-23 16:41 1862http://bzhang.mild.blog.163.com ... -
(转)DB2备份恢复数据库步骤
2011-11-23 16:23 961http://tech.it168.com/ibmtec ... -
(转)DB2 SQL Error: SQLCODE=-964, SQLSTATE=57011的原因及解决方法
2011-11-07 15:03 9691http://blog.sina.com.cn/s ... -
(转)DB2解决“数据库日志已满”操作 SQLCODE=-964
2011-11-07 14:49 2708http://www.db2china.ne ... -
(转)用哪个DB2命令查看DB2 instance是启动还是停止的?
2011-09-30 13:25 3662http://bbs.chinaunix.net/thre ... -
(转)论 LOAD 与 IMPORT 中的 codepage 转换
2011-07-11 14:55 1178http://www.ibm.com/develo ... -
(转)DB2导出数据库表结构和数据
2011-07-11 14:19 1585http://hi.baidu.com/mylovecha ... -
(转)DB2 9 中基于字符的字符串函数
2011-06-16 11:32 1445http://www.ibm.com/develo ... -
(转)db2look:生成 DDL 以便重新创建在数据库中定义的对象
2011-05-31 14:56 1658http://blog.csdn.net/hrfdotnet/ ... -
(转)【俊哥儿张】DB2:学习 DB2LOOK 命令
2011-05-31 14:54 1431http://space.itpub.net/770528 ... -
(转)Recreate optimizer access plans using db2look
2011-05-31 14:53 1283http://www.ibm.com/develo ... -
(转)DB2中ALTER TABLE为什么需要REORG操作?
2011-05-12 13:10 1705http://www.flatws.cn/article/ ... -
(转)DB2 3.2.2 表空间维护
2011-05-11 12:53 1195http://book.51cto.com/art/2 ... -
(转)DB2 数据类型
2011-05-11 12:52 4022http://hi.baidu.com/uvvv/blog ... -
(转)DB2 Basics: Table spaces and buffer pools
2011-05-06 15:29 1499http://www.ibm.com/develo ... -
(转)SQL1092N "USER" does not have the authority to perform therequested command -
2011-03-23 17:39 5501http://dbaspot.com/foru ... -
(转)DB2 sqlstate 57016 原因码 "7"错误详解
2011-03-07 17:38 1509http://www.db2china.net/clu ... -
(转)在英语 OS 上设置 DB2 UDB 版本 8 中的混合字节字符集(MBCS)数据库
2011-02-16 16:25 1625http://www.ibm.com/develo ... -
(转)DB2 CODEPAGE List
2011-02-15 15:15 1438http://www.db2china.net/hom ... -
(转)快速参考: DB2 命令行处理器(CLP)中的常用命令
2010-11-11 10:44 985http://www.ibm.com/develo ...
相关推荐
通过以上介绍可以看出,《DB2 Universal Database for iSeries SQL Reference V5R3》不仅涵盖了DB2 UDB for iSeries SQL的基础概念和语法细节,还深入探讨了如何利用这些功能来构建高效、安全的关系型数据库应用。...
通过该jar包可连接到远程as400上的db2数据库
根据给定文件的信息,我们可以提炼出关于“db2_Database_administration_for_iSeries”的一系列重要知识点,这主要涉及IBM i系列系统(原名AS/400)上的DB2数据库管理,具体版本为6 Release 1 (V6R1)。下面将详细...
C#连DB2库文件IBM.Data.DB2.iSeries.dll
DB2通用与DB2_AS400的JDBC包是用于在Java应用程序中与IBM的DB2数据库系统交互的关键组件。这些JDBC(Java Database Connectivity)驱动程序允许开发者使用标准的SQL语句通过Java代码来执行数据库操作。在这个场景中...
DB2 for IBM i平台上的SQL存储过程是用于封装逻辑、操作数据库并能够通过SQL接口调用的程序。它们不仅可以支持输入和输出参数,还能返回结果集,遵循iSeries的安全模型,增强数据的安全性,并且可以利用iSeries的...
根据给定的文件信息,我们可以总结出以下关于DB2 Universal Database for iSeries中存储过程、触发器和用户自定义函数的重要知识点。 ### DB2 Universal Database for iSeries简介 #### 1.1 集成的关系数据库 DB2 ...
ODBC是一种标准的应用程序编程接口(API),允许应用程序访问不同数据库系统,如DB2,而无需了解底层数据库系统的细节。 描述中提到的“AS/400上DB2数据”指的是运行在IBM iSeries (以前称为AS/400)服务器上的DB2...
DB2_400是IBM iSeries(以前称为AS/400)系统上的数据库管理系统,它是IBM DB2家族的一部分,特别针对IBM i操作系统优化。本主题将深入探讨DB2_400的数据库设计与编程,以帮助你理解如何在这一平台上创建、管理和...
虽然IBM i通常使用自己的DB2数据库系统,但iSeries Access也支持与其他数据库系统的集成,包括SQL Server。这意味着用户可以通过这个工具在Windows环境中远程查询、管理和维护SQL Server数据库。 IBM iSeries ...
DB2是IBM的旗舰级数据库产品,支持多种操作系统平台,包括Windows、Linux、Unix、Mac OS X以及IBM自身的z/OS和iSeries。DB2以高效、稳定和安全著称,广泛应用于金融、电信、零售等行业。 二、DB2安装与配置 安装DB2...
总的来说,AS400 DB2 SQL涉及的内容广泛且深入,包括SQL基础、高级特性、系统管理和开发接口等多个层面。这个压缩包对于AS400系统管理员、数据库开发者或者对AS400平台有兴趣的人来说,都是一个极好的学习和参考资料...
数据库开发必备软件,全面支持常用数据库 Oracle 8i, 9i, 10g, 11g Microsoft SQL Server 2000, 2005, 2008, 2012, 2014 Windows SQL Azure 11 DB2 UDB 7.x, 8.x, 9.x, 10.x DB2 UDB for iSeries 5.x, 6.x, 7.x, 8.x...
- **集成关系型数据库**:DB2 Universal Database (UDB) for iSeries 是一个集成的关系型数据库系统,专门为iSeries平台设计。 - **概述**:该系统提供了强大的数据库管理功能,包括支持多种数据类型、事务处理、...
本文将深入探讨标题中提及的几个主流数据库系统——SQL Server 2000与2005、Oracle 10g、MySQL、DB2以及AS400,以及如何使用Java进行数据库驱动加载和建立连接。 1. SQL Server 2000/2005: Microsoft SQL Server...
AS400数据库快速入门是针对IBM的iSeries或System i平台上的数据库系统进行的一次基础知识的探索。AS400,现在被称为IBM i,是一个强大的企业级服务器,以其内置的数据库管理系统IBM DB2 for i而闻名。在这个快速入门...
根据给定文件的信息,我们可以深入探讨与DB2错误信息相关的几个关键知识点,这些知识点主要集中在DB2中的SQL错误代码(SQLCODE)、SQL状态(SQLSTATE)以及相关消息的处理上。 ### DB2 SQLCODE SQLCODE是DB2在执行SQL...
**DB2 存储过程与触发器** 是 IBM DB2 Universal Database(UDB)中的两个重要概念,它们对于构建高性能、高可靠性的数据库应用程序至关重要。 ##### 1. 存储过程(Stored Procedures) 存储过程是一种在数据库...
DB数据库驱动,特别是JDBC_Drivers_of_DB2,是连接Java应用程序与IBM DB2数据库的关键组件。JDBC,即Java Database Connectivity,是Java平台的标准接口,允许Java程序与各种类型的数据库进行通信。在本压缩包中,...