关于mysql存储过程中占位符的使用问题

幕后黑手-Boss 幕后黑手-Boss 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
mysql升级,以前4.0,没用过存储过程
现在升级5.x了,终于可以用了
但是使用中发现一个问题
Create PROC t
BEGIN
set @a = 'tt';
set @sql = 'select * from ?';
PREPARE s from @sql;
EXECUTE s using @a;
DEALLOCATE PREPARE s;
end
这样的就会报错,也就是说 在 @sql中的 ? 认不出来

如果@sql的值不是sql语句,而是普通的字符串,就没有这个问题,如:
Create PROC t
BEGIN
set @a = 'tt';
set @sql = 'select ?';
PREPARE s from @sql;
EXECUTE s using @a;
DEALLOCATE PREPARE s;
end
这个就能整整的显示出来,显示 tt

猜想可能是由于@sql 值为sql语句的问题,哦,就是传说中的预制sql语句
应该怎么样解决呢?
这个参数怎么才能传入呢?
先在这里感谢大家了。
...全文

相关推荐

mysql中存储过程、函数的一些问题

最近写一些mysql的存储过程和函数,发现网上比较有价值的文档很少,大都是照着手册上抄来的,有些实际问题解决不了,比如用变量作表名。 经过反复调试,总算找到解决办法,一下是一些简单的记录,比较零碎。部分内容转自http://my.opera.com/Dereky/blog/show.dml/322997 1.用变量做表名: 简单的用set或者declare语句定义变量,然后直接作为sql的表名是不行的,mysql会把变量名当作表名。在其他的sql数据库中也是如此,mssql的解决方法是将整条sql语句作为变量,其中穿插变量作为表名,然后用sp_executesql调用该语句。 这在mysql5

weixin_38672731

使用mysql中遇到的几个问题

首先mysql不是可视化的,可以通过命令行进行操作,包括创建数据库、表、添加数据等等。那岂不是很不方便了吗?

weixin_38499732

详解Java的JDBC API的存储过程与SQL转义语法的使用

主要介绍了详解Java的JDBC API的存储过程与SQL转义语法的使用,JDBC是Java用于连接使用各种数据库的API,需要的朋友可以参考下

weixin_38687928

PostgreSQL存储过程用法实战详解

主要介绍了PostgreSQL存储过程用法,结合具体实例详细分析了PostgreSQL数据库存储过程的定义、使用方法及相关操作注意事项,并附带一个完整实例供大家参考,需要的朋友可以参考下

weixin_38624437

Java调用存储过程的2种方法

Java调用存储过程的2种方法 Java调用存储过程的2种方法 Java调用存储过程的2种方法

tonnytangy
评论 2
收藏 已收藏
分享
返回顶部
幕后黑手-Boss
MySQL 57,062 成员 56,759 内容