php sybase_ct,Sybase CT-lib开发库中文说明

15. 准备结果集ct_results()

CS_RETCODE ct_results(CS_COMMAND *cmd_ptr, CS_INT *result_type)

说明:

Result_type:输出变量,表示结果类型。包括:

结果集的类型        Result_type值        说明        结果集内容

命令执行状态        CS_CMD_DONE        表示一个命令已经正常结束        无

CS_CMD_FAIL        命令执行有错误        无结果集

CS_CMD_SUCCEED        成功执行一个无结果集的命令,如insert命令        无结果集

Fetch状态        CS_COMPUTE_RESULT        统计结果集行数        结果集行数

CS_CURSOR_RESULT        Cursor的处理结果        结果集行数

CS_PARAM_RESULT        返回存储过程的出参        出参的数值

CS_STATUS_RESULT        返回存储过程的状态        状态

CS_ROW_RESULT        返回记录行供处理        0或多条记录

Eg:  select …. From  …

Order by …

Compute sum() by …

返回值

CS_SUCCEED:结果集已准备好,应用可用

CS_END_RESULTS:所有的结果都已处理完毕

CS_FAIL:执行出错,结果集中的结果无效。

CS_CANCELED:结果集被取消

CS_PENDING/CS_BUSY:

处理的方式为:

while ((result_ok=ct_results(cmd_ptr,&result_type)) == CS_SUCCEED)

{

switch ((int)result_type)

{

case CS_ROW_RESULT:  /*普通行*/

1.        绑定输出列 ct_bind

2.        取出结果集 ct_fetch

break;

case CS_CMD_DONE: /*所有结果处理完毕*/

break;

case CS_CMD_SUCCEED: /*命令执行无错误*/

break;

case CS_CMD_FAIL: /*命令执行有错误*/

break;

case CS_PARAM_RESULT: /*对于rpc,捆绑及取出输出参数*/

1.        绑定输出列 ct_bind

2.        取出结果集 ct_fetch

break;

case CS_STATUS_RESULT: /*对于rpc,捆绑及取出返回状态*/

1.        绑定返回状态(只有一列)ct_bind

2.        取出返回状态值ct_fetch

break;

case CS_COMPUTE_RESULT: /*取出计算数据*/

break;

case CS_CURSOR_RESULT: : /*游标结果集数据*/

1.        绑定输出列 ct_bind

2.        取出结果集 ct_fetch

break;

default:

break;

}

}

/*命令结束处理*/

switch (result_ok)

{

case  CS_END_RESULTS: /*所有结果处理完毕*/

{

ret_code=CS_SUCCEED;

break;

}

case  CS_FAIL:

{

ret_code=CS_FAIL;

break;

}

default:

{

ret_code=CS_FAIL;

break;

}

}

各种操作的ct_results返回值与返回类型的各值次序

result=ct_results(cmd_ptr,&result_type)

正确操作        说明

Result_type        Result

Select操作        1.CS_ROW_RESULT        1CS_SUCCEED        可取结果集:ct_bind/ct_fetch

2.CS_CMD_DONE        2CS_SUCCEED        命令执行成功

3CS_END_RESULTS        命令结束

Insert操作        1.CS_CMD_SUCCEED        1CS_SUCCEED        Update与delete同insert一样

2. CS_CMD_DONE        2CS_SUCCEED

3CS_END_RESULTS

RPC        1.CS_STATUS_RESULT        1. CS_SUCCEED        先得到RPC的返回值:

ct_bind/ct_fetch

2.CS_PARAM_RESULT        2 CS_SUCCEED        再得到RPC出参值

:ct_bind/ct_fetch

3. CS_CMD_SUCCEED        3. CS_SUCCEED

4 CS_CMD_DONE        4. CS_SUCCEED

5CS_END_RESULTS

CURSOR        1 CS_CMD_SUCCEED        1. CS_SUCCEED        定义cursor

2 CS_CMD_DONE        2 CS_SUCCEED

3 CS_CMD_SUCCEED        3. CS_SUCCEED        打开cursor

4 CS_CMD_DONE        4. CS_SUCCEED

5CS_CURSOR_RESULT        5. CS_SUCCEED        处理结果集: :ct_bind/ct_fetch

6 CS_CMD_DONE        6. CS_SUCCEED

7CS_END_RESULTS

错误的操作都是一样:

Result_type        Result

1.CS_CMD_FAIL        CS_SUCCEED

2.CS_CMD_DONE        CS_SUCCEED

CS_END_RESULTS

16. 释放一个COMMAND结构Ct_cmd_drop

CS_RETCODE ct_cmd_drop(CS_COMMAND *cmd_ptr)

返回值

CS_SUCCEED:结果集已准备好,应用可用

CS_FAIL:执行出错,结果集中的结果无效

CS_BUSY:

17. 获取结果集或命令信息ct_res_info()

CS_RETCODE ct_res_info(cmd_ptr,  type, buffer, buflen , outlen )

CS_COMMAND *cmd_ptr

CS_INT type

CS_VOID *buffer

CS_INT buflen

CS_INT *outlen

说明:

Type:

Value of type        返回给buffer的值        Ct_results后的result_type参数值        Buffer类型

CS_CMD_NUMBER        产生结果集的命令条数        任意值        CS_INT

CS_NUM_COMPUTERS        当前命令的computer子句个数        CS_COMPUTER_RESULT        CS_INT

CS_NUMDATA        结果集的项目个数或列个数        CS_COMPUTER_RESULT

CS_ROW_RESULT

CS_PARAM_RESULT

CS_STATUS_RESULT

CS_ROWFMT_RESULT        CS_INT

CS_NUMBERCOLS        Order-by的列数        CS_ROW_RESULT        CS_INT

CS_ROW_COUNT        本次命令涉及的记录行数        CS_CMD_DONE

CS_CMD_FAIL

CS_CMD_SUCCEED        CS_INT

CS_TRANS_STATE        当前的事务状态        任何值        CS_INT

Eg:

/*** Find out how many columns there are in this result set. */

retcode = ct_res_info(cmd, CS_NUMDATA, &num_cols, CS_UNUSED, NULL);

if (retcode != CS_SUCCEED)

{

ex_error("FetchComputeResults: ct_res_info() failed");

return retcode;

}

for (i = 0; i < num_cols; i++)

{

/*

** Get the column description.  ct_describe() fills the

** datafmt parameter with a description of the column.

*/

retcode = ct_describe(cmd, (i + 1), &datafmt);

if (retcode != CS_SUCCEED)

{

ex_error("FetchComputeResults: ct_describe() failed");

break;

}

retcode = ct_bind(cmd, (i + 1), &datafmt,

coldata.value, &coldata.valuelen,

(CS_SMALLINT *)&coldata.indicator);

if (retcode != CS_SUCCEED)

{

ex_error("FetchComputeResults: ct_describe() failed");

break;

}

}

18. 获取数据每一列的描述ct_describe()

CS_RETCODE ct_describe(cmd_ptr , item, *datafmt)

CS_COMMAND *cmd_ptr

CS_INT item                ------列或返回值的序号,从1开始

CS_DATAFMT *datafmt;     ----数据属性格式

说明:

Datafmt会填写以下字段:

字段名        类型        值

name                列名

namelen

Datatype        列类型        CS_XXX_TYPE

Format        Not used

Maxlength                最大长度

Scale

Precision                浮点

Status                浮点

Count

usertype

Locale

19. Ct_options

20. 将结果集绑定给输出变量ct_bind()

CS_RETCODE ct_bind(cmd_ptr, item, datafmt, buffer ,  copied , ind)

CS_COMMAND *cmd_pte

CS_INT item  ----绑定的列或参数位置,从1开始,存储过程返回值则按出参顺序从1开始

CS_DATAFMT *datafmt

CS_VOID *buffer  ---绑定的输出变量数级组(按列绑定 char aa[col][列的最大长度])

CS_INT  *copied   ----拷贝的地址或NULL

CS_SMALLINT *ind   ----指示器或NULL

说明:

Datafmt成员设置:

Name:不设

Namelen:不设

Datatype:设置成对应的类型CS_XXX_TYPE

Format:除了binary, text, image外设置为CS_FMT_UNUSED

Maxlength:对于固定长度的列可忽略

Scale:用于浮点数

Precision:用于浮点数

Status:不设

Count:每次绑定的记录个数,一般为1

返回值:

CS_SUCCEED:执行成功

CS_FAIL:执行失败

CS_BUSY:在异步操作时表示本连接状态不可知

21. 向下取一条记录ct_fetch()

CS_RETCODE ct_fetch(cmd_ptr, type, offset , option , rows_read)

CS_COMMAND *cmd_ptr

CS_INT type        ---CS_UNUSED

CS_INT offset   ---CS_UNUSED

CS_INT option    ---CS_UNUSED

CS_INT        *rows_read   ---一次fetch的行数

返回值:

CS_SUCCEED:本次fetch执行成功,读出的记录数为roaw_read

CS_END_DATA:全部数据fetch结束,应用程序应调用ct_results取下一个结果集

CS_ROW_FAIL: 一次处理中有部分记录是错误的,常用于数组绑定

CS_FAIL:操作失败

CS_CANCELED:        取消

CS_BUSY/CS_PENDING:在异步操作时表示本连接状态不可知

Eg:

While (((retcode = ct_fetch(cmd,CS_UNUSED, CS_UNUSED, CS_UNUSED,&rowsread)) == CS_SUCCEED)|| (retcode ==CS_ROW_FAIL))

{

If (retcode==CS_ROW_FAIL){printf(“error on row: %d”,rowsread);}

For (i=0; i

{

按列取得每一行记录;

}

}

Switch (retcode)

{

Case  CS_END_DATA:  retcode=CS_SUCCEED; break;

Default : retcode   CS_FAIL; break;

}

22. 安装回叫函数Ct_callback()/cs_config()

CS_RETCODE ct_callback(cntx_ptr, conn_ptr, action , type , func)

CS_CONTEXT *cntx_ptr

CS_CONNECTIOn *conn_ptr

CS_INT action   == CS_SET / CS_GET

CS_INT type

CS_VOID *func ----回叫函数名

CS_RETCODE cs_config(cntx, action ,  property, buffer , buflen, outlen )

CS_CONTEXT *cntx;

CS_INT action ;   == CS_SET / CS_GET/CS_CLEAR

CS_INT property :设置的属性值

CS_VOID *buffer  ----回叫函数名

CS_INT buflen;  ---CS_UNUSED

CS_INT *outlen;  ---- NULL

说明

Ct_callback用来设置ct_lib的回叫函数

Type名        说明

CS_CLIENTMSG_CB        客户端的消息处理

CS_SERVERMSG_CB        server端的消息处理

Cs_config用来设置cs_lib的回叫函数

Property值         说明

CS_MESSAGE_CB        CS的消息处理

返回值:

CS_SUCCEED:执行成功

CS_FAIL:执行失败

CS_BUSY:在异步操作时表示本连接状态不可知

23. 取消一个命令或清除一个结果集Ct_cancel()

CS_RETCODE ct_cancel(conn_ptr, cmd_ptr, type)

CS_CONNECTION *conn_ptr

CS_COMMAND *cmd_ptr

CS_INT type

说明:

1.        如果type= CS_CANCEL_CURRENT则conn_ptr=NULL

2.        如果type= CS_CANCEL_ALL则conn_ptr和cmd_ptr中有一个必须=NULL

Type 值

CS_CANCEL_CURRENT:仅取消当前的结果集,而不是整批数据。取消命令并没有被送到SQLServer。

CS_CANCEL_ALL::取消批命令中的所有结果。Server一收到取消命令,它就停止相应的处理工作。

24. 关闭一个连接ct_close()

CS_RETCODE ct_close(CS_CONNECTION *conn_ptr,  CS_INT option )

Option:

=CS_FORCE_CLOSE:强制关闭

=CS_UNUSED:关闭前发消息给server等当前操作结束后关闭连接

返回值:

CS_SUCCEED:执行成功

CS_FAIL:执行失败

CS_BUSY:在异步操作时表示本连接状态不可知

CS_PENDING

25. 初始化一个cursor:ct_cursor()

CS_RETCODE ct_cursor(cmd_ptr, type, name,  namelen, text ,  textlen , option)

CS_COMMAND *cmd_ptr

CS_INT type :初始化操作类型

CS_CHAR  name  :cursor名

CS_INT namelen  :CS_NULLTERM

CS_CHAR *text  ----cursor对应的SQL操作语句

CS_INT textlen  :CS_NULLTERM

CS_INT option

Type值        说明        Name值        Text值        Option值

CS_CURSOR_DECLARE        定义一个cursor        Cursor名        对应的SQL语句        CS_UNUSED:是否修改则服务器决定

CS_READ_ONLY:只读cursor

CS_FOR_UPDATE:可修改cursor

CS_CURSOR_OPEN        打开一个cursor        NULL        NULL        首次打开时CS_UNUSED

CS_CURSOR_CLOSE        关闭        NULL        NULL        CS_UNUSED:只关闭cursor

CS_DEALLOC:关闭cursor同时释放资源

CS_CURSOR_OPTION        设置cursor属性        NULL         NULL        CS_UNUSED

CS_CURSOR_ROWS        设置cursor一次处理的行数        NULL        NULL        一次处理的行数

CS_CURSOR_DELETE        Cursor执行删除操作        对应的表名        NULL        CS_UNUSED

CS_CURDOR_UPDATE        Cursor执行修改操作        对应的表名        SQL语句        CS_UNUSED

CS_CURSOR_DEALLOC        释放一个cursor        NULL        NULL        CS_UNUSED续

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值