首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为oracle中的函数创建同义词

为oracle中的函数创建同义词
EN

Stack Overflow用户
提问于 2021-12-15 15:08:06
回答 1查看 126关注 0票数 0

对于Oracle中的函数,我无法使用同义词进行以下查询。我使用以下查询创建了同义词:创建或替换同义词“schema1”。“function1”表示“schema2”。“function2”。

但是当我尝试使用这个同义词时,我得到了下面的错误: ORA-00904:"function1":无效标识符

在为函数创建同义词时,是否也必须传递参数?

EN

回答 1

Stack Overflow用户

发布于 2021-12-15 15:46:30

来自数据库对象名称和限定符文档:

数据库对象命名规则 每个数据库对象都有一个名称。在SQL语句中,使用引用标识符或非引用标识符表示对象的名称。

  • 引用的标识符以双引号(")开头和结尾。如果使用引用的标识符命名架构对象,则必须在引用该对象时使用双引号。
  • 没有引号的标识符不被任何标点符号包围。

..。

  • 非引用标识符不区分大小写。Oracle将它们解释为大写。引用的标识符区分大小写。 通过将名称括在双引号中,可以将下列名称分配给同一个命名空间中的不同对象: “雇员”“雇员” 注意,Oracle对以下名称的解释是相同的,因此它们不能用于同一命名空间中的不同对象: 雇员雇员“雇员”

如果您已经使用以下方法创建了您的函数:

代码语言:javascript
复制
CREATE FUNCTION schema1.function1 /* (...) */ RETURNING NUMBER
IS
BEGIN
  RETURN NULL;
END;
/

然后,函数使用非引用标识符,其标识符将在数据字典中转换为大写。

然后,您可以使用以下方法引用您的函数:

代码语言:javascript
复制
"SCHEMA1"."FUNCTION1"
SCHEMA1.FUNCTION1
schema1.function1
ScHeMa1."FUNCTION1"
scheMa1.FUNCtion1

等。如果引用的标识符是大写的,非引用的标识符可以有任何大小写。

但是,"schema1"."function1"会失败,因为对象称为"SCHEMA1"."FUNCTION1",通过使用引用的标识符,您将强制标识符中的大小写感知(而不是将非引用标识符隐式转换为大写的默认行为,然后大小写敏感性不是问题)。

如果您已经使用小写引用标识符创建了模式和函数(不要这样做,这是不好的做法),那么您将不得不使用完全相同的引用标识符来引用它们。

代码语言:javascript
复制
CREATE FUNCTION "schema1"."function1" /* (...) */ RETURNING NUMBER
IS
BEGIN
  RETURN NULL;
END;
/

那么您只能使用以下方法来引用它:

代码语言:javascript
复制
"schema1"."function1"

并且(假设您有创建同义词的权限),那么您的代码应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70365966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档