GaussDB-type Stmt
type Stmt如下表所示。
| 方法 | 描述 | 返回值 |
|---|---|---|
| (s *Stmt)Close() | 关闭给定的预处理语句。 | error |
| (s *Stmt)Exec(args ...interface{}) | 使用给定的参数执行预处理语句,并返回一个Result值。支持PBE 特性。PBE,即Prepare-Bind-Execute,是发送和执行查询的一种方式,CN可通过复杂查询协议接收PBE报文执行语句。说明:1. 预编译语句的占位符可以为“$”也可以是“?”。 |
- 预编译语句的占位符数量由数据库限制,当表字段超过数据库限制或者与当前表字段数目不匹配时,由服务端返回错误。
- PBE特性支持增、删、改操作,批量操作时 U 报文最大长度限制 为1GB - 1B,即0x3fffffff字节。超出长度限制会报bind message length XXX too long. This can be caused by very large or incorrect ength specifications on InputStream parameters错误。
- 插入一条数据的时候,使用PBE对比单插接口(conn.simpleExec,简单执行语句)有大幅的性能下降,建议优先使用单插接口而不是PBE。
- 驱动底层错误处理重构,PBE性能对比原来下降不到5%。 | Result, error | | (s *Stmt)ExecContext(ctx context.Context,args ...interface{}) | 在给定的上下文中,使用给定的参数执行预处理语句,并返回一个Result值。 | Result, error | | (s Stmt)Query(args ...interface{}) | 使用给定的参数执行预处理语句,并以Rows形式返回查询结果。 | *Rows, error | | (s Stmt)QueryContext(ctx context.Context,args ...interface{}) | 在给定的上下文中,使用给定的参数执行预处理语句,并以Rows形式返回查询结果。 | *Rows, error | | (s Stmt)QueryRow(args ...interface{}) | 使用给定的参数执行预处理语句,并返回一个Row作为结果。 | *Row | | (s Stmt)QueryRowContext (ctx context.Context,args ...interface{}) | 在给定的上下文中,使用给定的参数执行预处理语句,并返回一个Row作为结果。 | *Row |
参数说明
| 参数 | 参数说明 |
|---|---|
| ctx | 表示给定的上下文。 |
| query | 被执行的sql语句。 |
| args | 被执行sql语句需要绑定的参数。支持按位置绑定和按名称绑定,详情见DB类型中的示例。 |
NOTICE:
- Query类接口Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句,如SELECT语句。操作语句使用Exec()接口执行,若非查询语句通过Query类接口执行,则执行结果可能与预期不符,因此不建议使用Query类接口执行非查询语句,例如UPDATE/INSERT等。
- 使用Query类接口执行查询语句的结果需要通过type Rows中Next()接口获取,若不通过Next()接口获取,可能会产生不可预期的错误。
更多详情请参考GaussDB 文档中心:doc.hcs.huawei.com/db/zh-cn/ga…