试图找出为什么NewID功能停止工作在Oracle



我过去使用SELECT NEWID() FROM DUAL来生成新的(随机)指南。
然而,今天当我尝试时,我得到以下错误:

ORA-00904: "NEWID":无效标识符

我无法通过谷歌找到这个特定的错误。所以我猜这个情况一定是这两个中的任何一个:

  1. 这要么是我的系统管理员以某种方式阻止了,要么是Oracle的实例由于一些安装/版本更新问题而无法找到该函数。
    -或-
  2. Oracle已经停止了对NEWID()的支持,希望我们只使用SYS_GUID()来生成Guid。
    (如果是,那么我将不得不实现REGEXP_REPLACE,因为我的系统中的guid是'-'分隔的。)
    另外-我将不得不更新所有使用NEWID())的现有代码。

任何建议都会有帮助的。Thx .

Oracle从来没有内置newID函数。这是一个存在于SQL Server中的函数,所以完全有可能有人以前创建了一个您习惯于调用的自定义newID函数。这个函数是否只是在后台调用sys_guid,或者它是否复制了SQL Server中guid的格式,就像这个实现一样,这是你必须确定的。通常,帮助您将代码从一个数据库引擎迁移到另一个数据库引擎的工具会安装一个函数库,这些函数库模拟目标数据库中源数据库引擎的内置函数,以便简化迁移。因此,您习惯调用的函数可能是由某些迁移工具安装的。

既然你说"版本/安装问题"我的猜测是,您连接到一个新的/不同的数据库,不具有您习惯的功能。如果是这样,您可能只需要转到代码工作的前一个数据库,并将自定义函数的代码复制到新数据库中。如果您使用先前工作的相同用户连接到相同的数据库,这意味着有人撤销了您的用户对该函数的访问权限或完全放弃了该函数,在这种情况下,您需要与DBA/DevOps团队交谈,以查看更改的内容和原因。

最新更新