在数据库中存储SQL语句

时间:2011-01-28 10:19:37

标签: php mysql stored-procedures

我公司的一些开发人员认为将生产代码中的SQL语句放入某个集中存储是个好主意。所以他们想出了将SQL语句存储在数据库中的想法,因此他们可以像这样从数据库中调用数据:

$result = GetData(#querynumber, parameters, ...);

这是好习惯吗?是否有集中存储sql-Statements的替代方案? Prepared语句不起作用,因为我们使用多个数据库,数据库名称将是sql语句中的变量。

2 个答案:

答案 0 :(得分:2)

我以前遇到过这样的想法,我很确定这不是一个好主意。

首先,如果你编写合理的模块化代码,大多数数据库的东西应该在同一个地方,所以为什么要把它放到数据库中。 其次:如果您更改查询,您还应该记住,代码可能依赖于查询的某些细节,您必须开始在两个不同的地方进行更改。

恕我直言,在大多数情况下,将查询外部化到数据库中是没有意义的。只需为您的模型编写体面模块化,低耦合的代码,您就应该过得更好。

答案 1 :(得分:2)

我就是这样做的。

常用sql连接表并获取结果应该在视图中。 常用的sql操作数据应该在存储过程中。

不太可能在别处使用的专用sql在代码中很好。

我个人不介意在代码中使用类似$ sql =“SELECT field1,field2 FROM $ view WHERE id = $ param”的代码。它是连接和分组的大块,它们将被重用,我认为不属于它。

但它们不属于查询表中的字符串。这是什么视图和存储过程。