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) ;

希望小伙伴们帮忙点个赞
待修定补充……


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部