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

Different schema names in stored procedures for development and production

模式名称在开发环境中为dev,在生产环境中为prod。当使用开发模式在开发中创建存储过程时,将此过程迁移到生产环境的方法应该是什么。下面是创建的示例过程,在将 SELECT 语句中的模式名称更改为 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 中,同样的问题正在通过使用配置文件来处理。请赐教移动存储过程的方法应该是什么。 我已搜索但找不到任何解决方案。

what should be the approach for moving stored procedures

不要在代码中引用架构名称。

如果 GET_EMPLOYEES 归 DEV 所有,则根本不需要包含架构。

如果过程属于不同的模式,则为 EMPLOYEE 创建一个同义词 table;在开发中,同义词将指向 DEV.EMPLOYEE,而在生产环境中,同义词将指向 PROD.EMPLOYEE。


Schema name is dev in development and prod in production environment

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

最佳做法是在所有环境中保持架构名称相同。如果那不可能,您可以随时使用 alter session set current_schema=schema_name