MySQL 定义预处理sql
通过预处理命令执行解决参数与表字段重复冲突的问题
案例:定义传入参数名age,与数据表中age名称重复
也可以使用 表名点字段名来解决(ld_tmp_cust.age = age)
CREATE PROCEDURE `execute_sql`(IN sqltext text)BEGINset @str = sqltext;PREPARE str from @str; --- 定义预处理EXECUTE str; -- 执行预处理DEALLOCATE PREPARE str; -- 释放预处理commit;END;DROP TABLE IF EXISTS ld_tmp_cust ;CREATE TABLE ld_tmp_cust(ID Int, name VARCHAR(100), age INT,brith VARCHAR(100));INSERT INTO ld_tmP_cust VALUES ('001','吕布',23,'1999-10-01');INSERT INTO ld_tmP_cust VALUES ('002','赵云',25,'1999-12-01');INSERT INTO ld_tmP_cust VALUES ('003','刘备',26,'1999-07-01');drop procedure p12 ;CREATE PROCEDURE p12( in age int )BEGINselect concat('SELECT name FROM ld_tmp_cust ','where age = ',age,' ;') into @aa ;call execute_sql ( @aa );end;call p12( 23) ;
或
drop procedure p11 ;CREATE PROCEDURE p11( in age int )BEGINselect concat('SELECT name FROM ld_tmp_cust ','where age = ',age,' ;') into @aa ;PREPARE sqla from @aa ; -- 定义预处理execute sqla ; -- 执行预处理DEALLOCATE PREPARE sqla; -- 释放预处理缓存end;call p11( 26) ;
希望小伙伴们帮忙点个赞
待修定补充……
如果觉得《MySQL 解决参数名与数据表字段名重复问题》对你有帮助,请点赞、收藏,并留下你的观点哦!