开发环境中的模式名称为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中,同样的问题也是通过使用配置文件来处理的。请告诉我,移动存储过程的方法是什么。 我找过了,但没有找到任何解决方案。
移动存储过程的方法应该是什么
不要在你的代码中引用模式名。
如果GET_EMPLOYEES是由DEV拥有的,那么根本不需要包含模式。
如果存储过程由不同的模式所拥有,则为EMPLOYEE表创建一个同义词;在开发中,同义词将指向DEV.EMPLOYEE,而在生产中则指向PROD.EMPLOYEE。
模式名称在开发环境中为dev,在生产环境中为prod。
顺便说一句,让我们把这种不良做法叫出来。我记得二十年前,我不得不与这样配置的环境搏斗。当时很痛苦,现在也很痛苦。但至少在过去,我们不知道什么是更好的。现在这样做没有任何借口,除非我们是在生产数据库中的一个单独的模式下进行开发(这是很不可原谅的)。
最好的做法是在所有环境中保持模式名称相同。如果不可能,你可以使用 alter session set current_schema=schema_name。