Mysql 存储过程使用Cast()
delimiter //
CREATE PROCEDURE dnt_getuserlist()
begin
declare pagesize int;
declare pageindex int;
declare orderby varchar(200);
DECLARE pagetop int;
DECLARE `sql` varchar(1000);
SET pagetop = (pageindex-1)*pagesize;
IF pageindex = 1 then
SET `sql`= 'SELECT TOP ' + CAST(pagesize AS varchar(10)) + ' [dnt_users].[uid],
FROM [dnt_users] LEFT JOIN [dnt_userfields] ON [dnt_userfields].[uid] = [dnt_users].[uid] ' + orderby;
ELSE
SET `sql` = 'SELECT TOP ' + CAST(pagesize AS varchar(10)) + ' [dnt_users].[uid], [dnt_users].[username], [dnt_users].[nickname], [dnt_users].[joindate], [dnt_users].[credits], [dnt_users].[posts], [dnt_users].[email], [dnt_users].[lastactivity], [dnt_userfields].[location] FROM [dnt_users] LEFT JOIN [dnt_userfields] ON [dnt_userfields].[uid] = [dnt_users].[uid] WHERE [dnt_users].[uid] NOT IN (SELECT TOP ' + CAST(pagetop AS varchar(10)) + ' [uid] FROM [dnt_users] ' + orderby + ') '+ replace(orderby,'WHERE','AND');
END IF;
select `sql`;
call `sql`;
end;//
该存储过程在 CAST(pagesize AS varchar(10))附近报错,请问是哪里错了,mysql里不能这样写吗?
CREATE PROCEDURE dnt_getuserlist()
begin
declare pagesize int;
declare pageindex int;
declare orderby varchar(200);
DECLARE pagetop int;
DECLARE `sql` varchar(1000);
SET pagetop = (pageindex-1)*pagesize;
IF pageindex = 1 then
SET `sql`= 'SELECT TOP ' + CAST(pagesize AS varchar(10)) + ' [dnt_users].[uid],
FROM [dnt_users] LEFT JOIN [dnt_userfields] ON [dnt_userfields].[uid] = [dnt_users].[uid] ' + orderby;
ELSE
SET `sql` = 'SELECT TOP ' + CAST(pagesize AS varchar(10)) + ' [dnt_users].[uid], [dnt_users].[username], [dnt_users].[nickname], [dnt_users].[joindate], [dnt_users].[credits], [dnt_users].[posts], [dnt_users].[email], [dnt_users].[lastactivity], [dnt_userfields].[location] FROM [dnt_users] LEFT JOIN [dnt_userfields] ON [dnt_userfields].[uid] = [dnt_users].[uid] WHERE [dnt_users].[uid] NOT IN (SELECT TOP ' + CAST(pagetop AS varchar(10)) + ' [uid] FROM [dnt_users] ' + orderby + ') '+ replace(orderby,'WHERE','AND');
END IF;
select `sql`;
call `sql`;
end;//
该存储过程在 CAST(pagesize AS varchar(10))附近报错,请问是哪里错了,mysql里不能这样写吗?
...全文
相关推荐
mysql_proc_page_order.zip_page_proc_page_排序MYSQL
mysql支持翻页与排序的存储过程,结合翻页功能和排序功能。
将IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、MySQL方法
本篇文章是对IP地址转换为整型数字的PHP方法、Asp方法和MsSQL方法、MySQL方法进行了详细的分析介绍,需要的朋友参考下
MySQL在数值方法中的应用1.docx
MySQL求最大值、最小值、平均数、加权平均数、中位数、几何平均数、众数
Mysql常用sql语句汇总
主要介绍了Mysql常用sql语句汇总的相关资料,需要的朋友可以参考下
MySQL迁移到PostgreSQL实战指南[可运行源码]
本文详细介绍了从MySQL迁移到PostgreSQL的完整流程,包括迁移前准备、核心迁移步骤、常见问题解决及迁移后优化。迁移前需进行环境调研、工具选型和源库备份,推荐使用pgLoader或手动迁移。核心迁移步骤涵盖Schema迁移(重点处理数据类型映射和语法差异)、数据迁移(全量同步与一致性校验)、索引/约束与存储过程迁移。常见问题包括数据类型不兼容、大小写敏感和查询性能下降,文中提供了具体解决方案。迁移后需优化数据库参数、适配应用驱动,并利用PostgreSQL的JSONB索引、分区表等高级特性提升性能。文章强调迁移后必须进行数据校验和分阶段切换业务流量,以确保稳定过渡。



