CREATE PROCEDURE PAGINATION_NAME11(IN IN_C INTEGER(11))BEGIN
--输入参数为列名,这样可以行吗,怎么处理这种问题。
SET @USERID=C;
PREPARE STMT FROM 'select * from table_name where @USERID=1';EXECUTE STMT ;
END
运行过程没有记录,怎么回事? 谢谢!
--输入参数为列名,这样可以行吗,怎么处理这种问题。
SET @USERID=C;
PREPARE STMT FROM 'select * from table_name where @USERID=1';EXECUTE STMT ;
END
运行过程没有记录,怎么回事? 谢谢!
解决方案 »
- MYSQL 区分表创建语句怎么写
- MySQL manager or server PID file could not be found!
- mysql event 每隔5天的凌晨3点执行一个存储过程,是这样写的吗?
- 新手提问
- Mysql 操作问题
- 菜鸟请教一个技巧问题.
- sql語法可程式化嗎
- Windows XP下ERROR 2003: Can't connect to MySQL server on 'localhost' (10061)?
- mysql 中连接的使用
- Apache 1.3.2+PHP4.0.6+MySql 为什么老是报告MYSQL错误!?
- mysql如何查询同一天的数据
- 感受2007年度MySQL开发者盛会
主要是想实现where条件中的列是动态的,过程的输入参数这动态列,如:
select * from 表名 where 输入参数(表中的某列)='key';
BEGIN
set @userid = 1;
set @stmt = concat("select * from t1 where p_c = ",@userid);
prepare s1 from @stmt;
execute s1;
deallocate prepare s1;END$$DELIMITER ;select * from t1;
query result(1 records)
p_c p_time
1 10:59:48
call sp_test2();query result(1 records)
p_c p_time
1 10:59:48
I.1. 对存储子程序和触发程序的限制
· SQL预处理语句(PREPARE、EXECUTE、DEALLOCATE PREPARE)。隐含意义:不能在存储子程序中使用动态SQL语句(其中,能够以字符串形式构造动态语句,然后执行它们)。从MySQL 5.0.13开始,对于存储程序放宽了该限制,但该限制仍适用于存储函数和触发程序。