简单的sql语句分解,通过存储过程。
2014-03-12 13:13
423 查看
DELIMITER $$
DROP PROCEDURE IF EXISTS `simpleSqlAnalyze`$$
CREATE PROCEDURE `simpleSqlAnalyze`( $sqlString NVARCHAR(2000), OUT $tableString NVARCHAR(2000), OUT $fieldString NVARCHAR(2000), OUT $whereString NVARCHAR(2000), OUT $orderString NVARCHAR(2000) ) SQL SECURITY INVOKER BEGIN SET @sql1=$sqlString; SET @sql2=TRIM(@sql1); SET @fromNum=LOCATE(' from ',@sql2); SET @field =SUBSTRING(@sql2,7,@fromNum-7); SET @sql3= SUBSTRING(@sql2,@fromNum+6); SET @byNum= LOCATE(' by ',@sql3); IF @byNum>0 THEN BEGIN SET @sql4=LEFT(@sql3,@byNum-6); SET @byfd=SUBSTRING(@sql3,@byNum-6); END; ELSE BEGIN SET @sql4=@sql3; SET @byfd=''; END; END IF;
SET @whereNum=LOCATE(' where ',@sql4);
IF @whereNum>0 THEN SET @tablefd=LEFT(@sql4,@whereNum); ELSE SET @tablefd=@sql4; END IF; SET @wherefd=SUBSTRING(@sql4,@whereNum); SET $tableString=@tablefd; SET $fieldString=@field; SET $whereString=@wherefd; SET $orderString=@byfd;
END$$
DELIMITER ;
#CALL simplesqlanalyze(' select f * from medialist join fd on sf=23 gro where 2w32 select from where group by dfsd ',@a,@b,@c,@d);
DROP PROCEDURE IF EXISTS `simpleSqlAnalyze`$$
CREATE PROCEDURE `simpleSqlAnalyze`( $sqlString NVARCHAR(2000), OUT $tableString NVARCHAR(2000), OUT $fieldString NVARCHAR(2000), OUT $whereString NVARCHAR(2000), OUT $orderString NVARCHAR(2000) ) SQL SECURITY INVOKER BEGIN SET @sql1=$sqlString; SET @sql2=TRIM(@sql1); SET @fromNum=LOCATE(' from ',@sql2); SET @field =SUBSTRING(@sql2,7,@fromNum-7); SET @sql3= SUBSTRING(@sql2,@fromNum+6); SET @byNum= LOCATE(' by ',@sql3); IF @byNum>0 THEN BEGIN SET @sql4=LEFT(@sql3,@byNum-6); SET @byfd=SUBSTRING(@sql3,@byNum-6); END; ELSE BEGIN SET @sql4=@sql3; SET @byfd=''; END; END IF;
SET @whereNum=LOCATE(' where ',@sql4);
IF @whereNum>0 THEN SET @tablefd=LEFT(@sql4,@whereNum); ELSE SET @tablefd=@sql4; END IF; SET @wherefd=SUBSTRING(@sql4,@whereNum); SET $tableString=@tablefd; SET $fieldString=@field; SET $whereString=@wherefd; SET $orderString=@byfd;
END$$
DELIMITER ;
#CALL simplesqlanalyze(' select f * from medialist join fd on sf=23 gro where 2w32 select from where group by dfsd ',@a,@b,@c,@d);
相关文章推荐
- sql语句存储过程简单复习
- SQL存储过程参数内容通过XML格式传送,把所有SQL语句操作放到一个存储过程里
- 生成SQL语句字符串,通过存储过程执行
- 通过SQL语句提取存储过程中的内容
- 通过SQL语句取存储过程的参数列表
- 数据库存储过程中定义一个变量,通过sql语句在数据表中获取这个变量值的方法。
- 通过SQL语句提取存储过程中的内容
- 一个调试简单的存储过程的SQL语句。
- 通过SQL语句提取存储过程中的内容
- 通过SQL语句提取存储过程中的内容
- 一个SQL存储过程面试题(比较简单)
- pl/sql developer中用execute调用存储过程弹出‘无效的sql语句’…该怎么解决
- 通过sql存储过程发送邮件的方法
- 用SQL语句生成某个库下所有存储过程脚本,并每个存为一个文件
- [PL/SQL] oracle sql语句 存储过程执行慢,单独执行快
- 分页查询存储过程sql语句
- 验证选择每日学习总结:DropDownList是否已选择验证、存储过程参数为sql字符串问题、将截断字符串或二进制数据。\r\n语句已终止
- 存储过程中执行动态Sql语句
- SQL语句存储过程实例详解(面试宝典)
- MySQL存储过程中实现执行动态SQL语句的方法