我公司的一些开发人员认为将生产代码中的SQL语句放入某个集中存储是个好主意。所以他们想出了将SQL语句存储在数据库中的想法,因此他们可以像这样从数据库中调用数据:
$result = GetData(#querynumber, parameters, ...);
这是好习惯吗?是否有集中存储sql-Statements的替代方案? Prepared语句不起作用,因为我们使用多个数据库,数据库名称将是sql语句中的变量。
答案 0 :(得分:2)
我以前遇到过这样的想法,我很确定这不是一个好主意。
首先,如果你编写合理的模块化代码,大多数数据库的东西应该在同一个地方,所以为什么要把它放到数据库中。 其次:如果您更改查询,您还应该记住,代码可能依赖于查询的某些细节,您必须开始在两个不同的地方进行更改。
恕我直言,在大多数情况下,将查询外部化到数据库中是没有意义的。只需为您的模型编写体面模块化,低耦合的代码,您就应该过得更好。答案 1 :(得分:2)
我就是这样做的。
常用sql连接表并获取结果应该在视图中。 常用的sql操作数据应该在存储过程中。
不太可能在别处使用的专用sql在代码中很好。
我个人不介意在代码中使用类似$ sql =“SELECT field1,field2 FROM $ view WHERE id = $ param”的代码。它是连接和分组的大块,它们将被重用,我认为不属于它。
但它们不属于查询表中的字符串。这是什么视图和存储过程。