JetSetColumns 函数
适用于: Windows |Windows Server
JetSetColumns 函数
JetSetColumns 函数的行为类似于 JetSetColumn,但允许应用程序在单个操作中设置多个列值。 JET_SETCOLUMN 结构的数组用于描述要设置的列值集,并描述要设置的每个列值的输入缓冲区。
JET_ERR JET_API JetSetColumns(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in_out_opt JET_SETCOLUMN* psetcolumn,
__in unsigned long csetcolumn
);
参数
sesid
用于此调用的会话。
tableid
要用于此调用的游标。
psetcolumn
指向一个或多个JET_SETCOLUMN结构的数组 的 指针。 每个结构都包含要设置的列值以及从何处获取要设置的列数据的说明。
csetcolumn
psetcolumn 给定的数组中JET_SETCOLUMN结构的数目。
返回值
此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误 和 错误处理参数。
返回代码 |
说明 |
---|---|
JET_errBadColumnId |
给定的列 ID 超出了列 ID 的法定限制。 |
JET_errClientRequestToStopJetService |
无法完成操作,因为与会话关联的实例上的所有活动都因调用 JetStopService 而停止。 |
JET_errColumnIllegalNull |
与 JET_errNullInvalid 相同。 |
JET_errColumnNotFound |
表中不存在由给定 columnid 描述的列。 |
JET_errColumnNotUpdatable |
在插入副本删除原始更新操作期间,非法尝试更新长值。 |
JET_errColumnTooBig |
输入缓冲区中给定的列值数据超出了固定长度列的自然大小限制,或者为固定长度文本或二进制列配置的大小限制。 为长列传递超过 1024 字节的数据并设置JET_bitSetIntrinsicLV标志时,也会返回此错误。 |
JET_errInstanceUnavailable |
无法完成操作,因为与会话关联的实例遇到严重错误,要求撤销对所有数据的访问权限以保护该数据的完整性。 此错误仅由 Windows XP 及更高版本返回。 |
JET_errInvalidBufferSize |
给定的列值数据大小与固定长度数据类型的自然值不匹配。 |
JET_errInvalidColumnType |
非法尝试在插入或更新操作期间更新自动递增列,或者在替换操作期间更新版本列。 |
JET_errInvalidgrbit |
提供的选项未知或已知位设置的非法组合。 |
JET_errInvalidParameter |
给定的 psetinfo-cbStruct> 不是 JET_SETINFO 结构的有效大小。 |
JET_errMultiValuedDuplicate |
设置列操作尝试创建重复值,并指定JET_bitSetUniqueMultiValues或JET_bitSetUniqueNormalizedMultiValues。 |
JET_errNotInitialized |
无法完成操作,因为与会话关联的实例尚未初始化。 |
JET_errNotInTransaction |
当调用会话不在事务中时,非法尝试更新长列值。 |
JET_errNullInvalid |
非法尝试将非 NULL 列设置为 NULL。 |
JET_errRecordTooBig |
无法将列值设置为输入缓冲区中的值,因为它会导致记录超出其与页面大小相关的大小限制。 JET_coltypLongText 或 JET_coltypLongBinary 类型的列可以独立于其余记录数据进行存储。 但是,其他列必须与记录一起存储,并可能导致超出记录大小限制。 即使是长列也需要记录中的 5 字节空间作为链接,这也可能导致返回JET_errRecordTooBig。 |
JET_errRestoreInProgress |
无法完成该操作,因为正在对与会话关联的实例执行还原操作。 |
JET_errSessionSharingViolation |
同一会话不能同时用于多个线程。 此错误仅由 Windows XP 及更高版本返回。 |
JET_errTermInProgress |
无法完成操作,因为正在关闭与会话关联的实例。 |
JET_errUpdateNotPrepared |
光标当前不在插入新记录或更新现有记录的过程中。 |
JET_wrnColumnMaxTruncated |
输入缓冲区中的列值超出了可变长度列的最大配置长度,并且被截断。 |
成功后,对于 psetcolumns 中描述的每个列,使用从输入缓冲区复制的数据设置列值的所需部分。 如果列数据集超过为可变长度列指定的最大长度,则列数据集可能已被截断。
失败时,游标位置保持不变,复制缓冲区中不会更新任何列值数据。
备注
如果任何单独的设置列操作返回错误,则整个 JetSetColumns 操作将返回错误。 通常,警告在 psetcolumns-error> 中返回,而不是在此函数的返回代码中返回。 但是,如果最后一列集有警告,则此警告将从 JetSetColumns 本身返回。
要求
要求 | 值 |
---|---|
客户端 |
需要 Windows Vista、Windows XP 或 Windows 2000 专业版。 |
服务器 |
需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。 |
标头 |
在 Esent.h 中声明。 |
Library |
使用 ESENT.lib。 |
DLL |
需要ESENT.dll。 |
另请参阅
JET_COLTYP
JET_ERR
JET_SESID
JET_TABLEID
JET_SETCOLUMN
JetRetrieveColumns
JetSetColumn