autoid find
此函数将返回由参数 arg
中的 autoid
值所引用的对象的句柄。
MCO_RET classname_autoid_find(
/*IN*/ mco_trans_h trans,
/*IN*/ autoid_t id
/*OUT*/ classname * handle
);
参数
trans
mco_trans_h
由 mco_trans_start()
函数返回的 MCO_READ_WRITE
事务句柄。
id
autoid_t
要定位的对象的autoid。
handle
classname *
类句柄类型变量的地址。
返回
MCO_S_OK
成功定位目标。
MCO_S_NOTFOUND
给定的autoid值没有引用对象。
MCO_E_TRANSACT
事务处于错误状态。
示例
以下代码片段展示了如何使用 classname_autoid_find()
函数来查找数据库对象。
Snippet from schema file:
class Department
{
autoid[1000];
string name;
string code;
unique tree<name> Iname;
unique tree<code> Icode;
};
class Employee
{
string name;
autoid_t dept;
unique tree<name> Iname;
unique tree<dept,name> Idept_name;
};
/* 应用程序代码片段 */
MCO_RET find_coworkers(mco_db_h db, char * search_name)
{
MCO_RET rc = MCO_S_OK;
mco_trans_h t;
Employee emp;
autoid_t dept_id1;
Department dept1;
/* Find co-workers of search_name */
rc = mco_trans_start(db, MCO_READ_ONLY, MCO_TRANS_FOREGROUND, &t);
...
rc = Employee_Iname_find(t, search_name, (uint2)strlen(search_name), &emp);
if (MCO_S_OK == rc)
{
printf("\n\n%s's co-workers in ", search_name);
Employee_dept_get(&emp, &dept_id1);
rc = Department_autoid_find(t, dept_id1, &dept1);
...
}
}