mysqld_stmt_preparevoid mysqld_stmt_prepare(THD*thd,const char *query,uintlength,
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()inSTDCALL 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
Prepared_statement继承图:
公共的成员函数
Destroy this prepared statement, cleaning up all used memory and resources. More...
virtual void
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...
execute_loop (String *expanded_query, bool open_cursor)
Execute a prepared statement. More...
Common part of DEALLOCATE PREPARE and mysqld_stmt_close. More...
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...