MySQL 解决参数名与数据表字段名重复问题
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) ;
希望小伙伴们帮忙点个赞
待修定补充……
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
