COM_STMT_PREPARE 1

mysqld_stmt_prepare

void mysqld_stmt_prepare(THD* thd,
                          const char * query,
                          uint length,
                          Prepared_statement * stmt
                         )                                   

功能:

COM_STMT_PREPARE handler.

给定带有参数标志的查询字符串,从中创建预处理语句并将PS发送给客户端。

如果在查询中找到参数标志,使用Item_param保存信息以及在lex->param_array中维护列表,以便可以在不遍历所有字段项的情况下进行快速直接的检索。

如果成功,一个新的statement id和元数据发送给客户端,否则在THD中设置错误信息。

参数:

thd  :  线程句柄

query: 要预处理的查询

length:查询字符串的长度,包括忽略末尾的NULL或者引用字符。

stmt: 用于预处理的prepared_statement

注意:

此函数解析查询并将参数和结果集元数据信息的总数发送回客户端(如果有),而不执行查询,即没有任何日志/磁盘写入。 这允许在执行期间重新执行查询而无需重新解析。

mysql_stmt_precheck()
bool mysql_stmt_precheck(THD * thd,
               const COM_DATA* com_data,
enum enum_server_command cmd,
               Prepared_statement **stmt
)

功能:

搜索具有指定id的语句并对其进行验证。

参数:

thd:[in]线程句柄

com_data:[in]命令数据

cmd:[in]要执行的命令类型

stmt:[out]指向Prepared_statement的指针,以便在找到时存储它

mysql_stmt_prepare()

in STDCALL mysql_stmt_prepare(MYSQL_STMT * stmt,
                  const char *query
                  ulong length
)
mysql_stmt_init()

MYSQL_STMT * STDCALL mysql_stmt_init(MYSQL * mysql)

Prepared_statement类

Prepared_statement: 一个可以包含占位符的语句。

#include <sql_prepare.h>

Prepared_statement继承图:

公共的成员函数

Prepared_statement (THD *thd_arg)
 
virtual ~Prepared_statement ()
 Destroy this prepared statement, cleaning up all used memory and resources. More...
 
virtual void cleanup_stmt ()
 
bool set_name (const LEX_CSTRING &name)
 
const LEX_CSTRINGname () const
 
void close_cursor ()
 
bool is_in_use () const
 
bool is_sql_prepare () const
 
void set_sql_prepare ()
 
bool prepare (const char *packet, size_t packet_length, bool force_primary_storage_engine)
 Parse statement text, validate the statement, and prepare it for execution. More...
 
bool execute_loop (String *expanded_query, bool open_cursor)
 Execute a prepared statement. More...
 
bool execute_server_runnable (Server_runnable *server_runnable)
 
PSI_prepared_stmtget_PS_prepared_stmt ()
 
void deallocate ()
 Common part of DEALLOCATE PREPARE and mysqld_stmt_close. More...
 
bool set_parameters (String *expanded_query, bool has_new_types, PS_PARAM *parameters)
 Assign parameter values either from variables, in case of SQL PS or from the execute packet. More...
 
bool set_parameters (String *expanded_query)

 

转载于:https://www.cnblogs.com/jingliang10101/p/9923710.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值