关于mysql存储过程中占位符的使用问题
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语句
应该怎么样解决呢?
这个参数怎么才能传入呢?
先在这里感谢大家了。
现在升级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
使用mysql中遇到的几个问题
首先mysql不是可视化的,可以通过命令行进行操作,包括创建数据库、表、添加数据等等。那岂不是很不方便了吗?
详解Java的JDBC API的存储过程与SQL转义语法的使用
主要介绍了详解Java的JDBC API的存储过程与SQL转义语法的使用,JDBC是Java用于连接使用各种数据库的API,需要的朋友可以参考下
PostgreSQL存储过程用法实战详解
主要介绍了PostgreSQL存储过程用法,结合具体实例详细分析了PostgreSQL数据库存储过程的定义、使用方法及相关操作注意事项,并附带一个完整实例供大家参考,需要的朋友可以参考下
Java调用存储过程的2种方法
Java调用存储过程的2种方法 Java调用存储过程的2种方法 Java调用存储过程的2种方法


