
# type Stmt
type Stmt如下表所示。
|                                                                      **方法**                                                                       |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          **描述**                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |    **返回值**    |
|---|---|---|
| (s \*Stmt)Close()                                                                                                                                 | 关闭给定的预处理语句。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              | error         |
| (s \*Stmt)Exec(args ...interface{})                                                                                                               | 使用给定的参数执行预处理语句，并返回一个Result值。支持PBE 特性。PBE，即Prepare-Bind-Execute，是发送和执行查询的一种方式，CN可通过复杂查询协议接收PBE报文执行语句。 说明： 1. 预编译语句的占位符可以为"$"也可以是"?"。  2. 预编译语句的占位符数量由数据库限制，当表字段超过数据库限制或者与当前表字段数目不匹配时，由服务端返回错误。  3. PBE特性支持增、删、改操作，批量操作时 U 报文最大长度限制 为1GB - 1B，即0x3fffffff字节。超出长度限制会报bind message length XXX too long. This can be caused by very large or incorrect length specifications on InputStream parameters错误。  4. 插入一条数据的时候，使用PBE对比单插接口(conn.simpleExec，简单执行语句)有大幅的性能下降，建议优先使用单插接口而不是PBE。  5. 驱动底层错误处理重构，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         |
   
![](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/public_sys-resources/notice_3.0-zh-cn.png)
1. Query类接口Query()、QueryContext()、QueryRow()、QueryRowContext()通常用于查询语句，如SELECT语句。操作语句使用Exec()接口执行，若非查询语句通过Query类接口执行，则执行结果可能与预期不符，因此不建议使用Query类接口执行非查询语句，例如UPDATE/INSERT等。
2. 使用Query类接口执行查询语句的结果需要通过[type Rows](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0243.html#ZH-CN_TOPIC_0000002200349606)中Next()接口获取，若不通过Next()接口获取，可能会产生不可预期的错误。
 
#### 参数说明
| **参数** |                                                                                                   **参数说明**                                                                                                   |
|---|---|
| ctx    | 表示给定的上下文。                                                                                                                                                                                                    |
| query  | 被执行的sql语句。                                                                                                                                                                                                   |
| args   | 被执行sql语句需要绑定的参数。支持按位置绑定和按名称绑定，详情DB类型中的[示例](https://support.huaweicloud.com/distributed-devg-v3-gaussdb/gaussdb-12-0240.html#ZH-CN_TOPIC_0000002200189814__zh-cn_topic_0000002200297932_section296721133117)。 |
   
