0

我是 pl/sql 的新手。我创建了一个名为 PROC1 的过程,如果另一个人创建具有相同名称的过程并且我的过程将被覆盖。是否有任何解决方案不使用同名覆盖我的过程 proc1 ?

4

2 回答 2

0

如果该人创建程序并起诉“创建程序...”,那么他们当然会收到警告,而“创建或替换程序...”不会引发错误。所以是的,

独立过程与表、视图、序列、私有同义词、独立过程、独立存储函数、包、物化视图和用户定义类型共享一个命名空间,因此具有相同名称的预先存在的对象这些类型将阻止创建函数。

但这通常不是问题,并且不需要人们在对象名称前加上 TAB 或 FNC 或任何东西,因为这些对象的结构良好的名称通常指向它的对象类型——例如。USERS(复数名词 -> 表),CREATE_INVOICE(ACTION + NOUN -> 过程),ACTIVE_USERS(形容词 + 名词 -> 视图)

但是,您可能有多个名称相同但规格不同的过程,如果它们被定义在一个包中,它们可以愉快地共存。所有过程都作为包的一部分存在,而不是独立存在,有很强的论据。

于 2013-03-15T16:57:40.090 回答
0

注意事项:

  1. 如果PROC1您的架构中存在名为的过程,则不能PROC1在您的架构中命名其他过程/函数。不过,可以创建一个具有相同名称的包,并在其中创建具有 name 的函数/过程PROC1

  2. 如果PROC1在其他用户的模式中命名了公共同义词,并且您指定PROC1,CALL PROC1等,则将调用您自己的过程而不是另一个。如果他们调用PROC1,他们将访问自己的对象,而不是您的过程。

  3. 对该过程的调用不会改变它。必须CREATE OR REPLACE PROCEDURE proc1在您的架构中使用以将其替换为他们的版本。

于 2013-03-15T16:32:38.870 回答