Oracle绑定param占位符允许哪些字符?

Ale*_*ter 5 sql database oracle parameters

有谁能请指出列出允许绑定变量名称的字符的位置?我花了几个小时挖掘Oracle SQL文档无济于事.

我的意思是":id"如下:

SELECT * FROM mytable WHERE id = :id
Run Code Online (Sandbox Code Playgroud)

例如,可以在那里使用点像":some.id"吗?它的功能是否与没有点的版本完全相同?

A B*_*A B 5

这些页面都声明绑定变量必须是“合法的 Oracle 标识符” 我找到的文档并没有特别说明点可以是合法标识符的一部分。我可以在表名和绑定变量名中使用点,但看起来不推荐这样做。

具有绑定变量命名约定的页面(这些页面声明绑定变量必须是合法标识符):

http://www.utoug.org/i/doc/concept_bind_var.htm

http://docs.oracle.com/cd/E23903_01/doc.41/e21674/concept_ses_val.htm#BEIEGCCC

描述法律标识符的页面:http : //docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements008.htm

除了在数据库链接中,我在此页面上找不到任何说明点是标识符(EG 表或绑定变量名称)的合法部分的内容。尽管 $ 和 # 是合法的,但它们甚至不被推荐使用,所以“.” 可能有效,但显然不推荐(在此页面上甚至没有提到合法)

绑定变量名称必须对应于项目名称。绑定变量名称不区分大小写。绑定变量名称不能超过 30 个字符(即,它们必须是有效的 Oracle 标识符)。

我知道有效的 ORACLE 标识符(基于 ORACLE 对合法标识符的定义)不能以数字开头,并且可以包含一些特殊字符,例如 $ 和 . 但如果有特殊字符,标识符必须用双引号括起来。

我能够获得一个带有点的标识符以在绑定变量中工作,但是当绑定变量中有一个点时,我不得不在绑定变量周围加上双引号。

create or replace function F0416B
RETURN VARCHAR2
is
    V_STMT    VARCHAR2(1999);
    V_RESULT  VARCHAR2(1999);
BEGIN 
    V_STMT := 'INSERT INTO TEST0411(FIELD1, FIELD2) VALUES ( :"A.1" , :"A.2")';
    EXECUTE IMMEDIATE V_STMT USING  'AS201', 'AS202';
    RETURN 'INSERT-OK';
    COMMIT;
EXCEPTION
WHEN OTHERS THEN RETURN SQLERRM;
END;    
Run Code Online (Sandbox Code Playgroud)

#这可能有效,但根据上述文档,绑定变量或其他对象名称中的句点/点不合法/不推荐...

#这是ORACLE模式对象命名页面上的一句话告诉我的:

未加引号的标识符只能包含数据库字符集中的字母数字字符以及下划线 (_)、美元符号 ($) 和井号 (#)。数据库链接还可以包含句点 (.) 和“at”符号 (@)。Oracle 强烈建议您不要在不带引号的标识符中使用 $ 和 #。