2011-10-13 220 views
4

任何人都可以请我指出允许绑定变量名称的字符在哪里列出?我花了几个小时深入挖掘Oracle SQL文档无济于事。Oracle允许哪些字符绑定参数占位符?

我的意思 “:ID” 中的以下内容:

SELECT * FROM mytable WHERE id = :id 

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

+0

你为什么不自己尝试一下呢? –

+0

我需要确保它有文档记录,因此对于版本10以上的所有Oracle版本都有效。 –

+0

除非您使用EXECUTE IMMEDIATE,否则PL/SQL不需要这种绑定变量。这是否为EXECUTE IMMEDIATE?或者你是指在其他上下文中使用绑定变量,如SQLplus,JDBC或ADO.NET? – Codo

回答

2

这两个页面的状态绑定变量必须是“合法的Oracle标识符” 我找到的文档没有具体说明点可以 是法定标识符的一部分。我能够在 中使用一个点名作为绑定变量名称,但看起来它不是 不推荐。

PAGES具有BIND变量命名约定 (这些页陈述绑定变量必须是合法的标识符):

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

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

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

我在这个页面上找不到任何东西,说点是合法的 标识符的一部分(E.G.表或绑定变量名称),但在数据库链接中除外。 即使$和#是合法的,他们甚至不被推荐,所以“。” 可能会工作,但显然不推荐(甚至没有提到作为合法的 此页)

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

我知道,一个有效的Oracle IDENTIFER(基于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;  

这可以工作,但根据上述文件中绑定变量或其他对象的名称一段/点

是不合法的/推荐...

这是对句子Oracle架构对象命名页面是

告诉我:

不带引号的标识符可以从databa只包含字母数字字符se字符集和下划线(_),美元符号($)和井号(#)。数据库链接也可以包含句点(。)和“at”符号(@)。 Oracle强烈建议您不要在非引用标识符中使用$和#。