如何在MySQL中创建临时存储过程?

21

我目前正在为一家餐厅开发门户网站应用程序。后端数据库使用的是Mysql,我使用Spring JDBC支持编写数据访问逻辑。

我的一些DAO充斥着多个查询,并且代码量高达数千行。我认为通过将一些逻辑移入SQL-PSM过程中可以降低代码的大小和复杂性(因为Java中的数据绑定和粘合代码如同来自地狱的可憎东西)。

然而,我没有DDL权限,因此无法创建过程。

我想知道是否有一种方法可以创建一个可丢弃或临时的过程,就像执行DML语句一样,而不必先创建它。

也就是说,我想要一个减去“create”关键词的过程,它可以完成我的工作、返回结果并消失不见。

虽然我搜索了很多,但仍找不到任何优雅的解决方案。:( 不知道您是否了解?


1
我甚至没有权利在Db中启用PSMs,更不用说让团队采用ORM了。 :-( 我已经决定通过其他方式减少复杂性,比如将我的查询外部化到单独的Spring配置文件中等。无论如何,感谢所有的回复。 :-) - Monika Michael
你尝试过从文本文件中执行SQL语句吗?链接 - dejjub-AIS
3个回答

16

我想您可能在寻找匿名代码块/匿名过程。不幸的是,在MySQL中不支持此功能(这在“大型”RDBMS(如Oracle或Sybase)中受支持)。

我建议使用一些ORM框架,但我不是Java开发者,所以无法推荐任何一个。


1
没错!匿名代码块。很遗憾听到mysql不支持它们.. :-( 不知道该怎么处理我的意大利面DAOs。 - Monika Michael
2
如果您事先创建了常规过程,仍然可以使用它们来完成部分工作。 - Salandur

2
今日免费次数已满, 请开通会员/明日再来

2
那不是问题。我已经有了Java的可用代码。关键是当涉及到关系表中的数据操作时,Java无法与SQL-PSM竞争。该代码可以缩小一半。 - Monika Michael
1
@MonikaMichael 你仍然可以通过运行查询在数据库端进行数据操作,对吧?只需将查询语句封装在Java方法中,而不是MySQL存储过程中。我不太了解你正在使用的JDBC,但任何现代的数据库抽象都应该包括多查询支持。 - kitti

1
你正在寻找匿名SQL块。但是MySQL不支持它。
唯一的解决方法是使用非匿名SQL块,即标准命名的存储过程和函数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接