开发和生产的存储过程中的不同模式名称

问题描述 投票:0回答:1

开发环境中的模式名称为dev,生产环境中的模式名称为prod。当一个存储过程在开发环境中使用dev模式创建时,应该用什么方法将这个存储过程迁移到prod环境中。下面是一个创建的存储过程示例,在将存储过程转移到生产环境之前,将SELECT语句中的模式名从dev改为prod的最佳(理想)方法是什么。

CREATE OR REPLACE PROCEDURE GET_EMPLOYEES(
            DEPT_CD IN VARCHAR2(3),
            RESULT_SET OUT SYS_REFCURSOR) AS


 BEGIN
   OPEN RESULT_SET FOR SELECT * FROM DEV.EMPLOYEE WHERE DEPT=DEPT_CD;
 END

END GET_EMPLOYEES;

这个过程将在UI中被调用,以在UI中显示数据。在UI中,同样的问题也是通过使用配置文件来处理的。请告诉我,移动存储过程的方法是什么。 我找过了,但没有找到任何解决方案。

oracle stored-procedures plsql development-environment production-environment
1个回答
3
投票

移动存储过程的方法应该是什么

不要在你的代码中引用模式名。

如果GET_EMPLOYEES是由DEV拥有的,那么根本不需要包含模式。

如果存储过程由不同的模式所拥有,则为EMPLOYEE表创建一个同义词;在开发中,同义词将指向DEV.EMPLOYEE,而在生产中则指向PROD.EMPLOYEE。


模式名称在开发环境中为dev,在生产环境中为prod。

顺便说一句,让我们把这种不良做法叫出来。我记得二十年前,我不得不与这样配置的环境搏斗。当时很痛苦,现在也很痛苦。但至少在过去,我们不知道什么是更好的。现在这样做没有任何借口,除非我们是在生产数据库中的一个单独的模式下进行开发(这是很不可原谅的)。


0
投票

最好的做法是在所有环境中保持模式名称相同。如果不可能,你可以使用 alter session set current_schema=schema_name。

© www.soinside.com 2019 - 2024. All rights reserved.