任何人都可以请我指出允许绑定变量名称的字符在哪里列出?我花了几个小时深入挖掘Oracle SQL文档无济于事。Oracle允许哪些字符绑定参数占位符?
我的意思 “:ID” 中的以下内容:
SELECT * FROM mytable WHERE id = :id
例如可以使用点像“:some.id”吗?它的功能是否与没有点的版本完全相同?
任何人都可以请我指出允许绑定变量名称的字符在哪里列出?我花了几个小时深入挖掘Oracle SQL文档无济于事。Oracle允许哪些字符绑定参数占位符?
我的意思 “:ID” 中的以下内容:
SELECT * FROM mytable WHERE id = :id
例如可以使用点像“:some.id”吗?它的功能是否与没有点的版本完全相同?
这两个页面的状态绑定变量必须是“合法的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;
是不合法的/推荐...
告诉我:
不带引号的标识符可以从databa只包含字母数字字符se字符集和下划线(_),美元符号($)和井号(#)。数据库链接也可以包含句点(。)和“at”符号(@)。 Oracle强烈建议您不要在非引用标识符中使用$和#。
我也很难找到这Oracle官方文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10646/oci04sql.htm#i420655
最重要的是,事实证明,你可以引述占位符(“_ normallyinvalid”),然后大部分在前面列出的规则链接停止相关。我找不到任何提供此建议的Oracle文档;只是在互联网上暗示。
你为什么不自己尝试一下呢? –
我需要确保它有文档记录,因此对于版本10以上的所有Oracle版本都有效。 –
除非您使用EXECUTE IMMEDIATE,否则PL/SQL不需要这种绑定变量。这是否为EXECUTE IMMEDIATE?或者你是指在其他上下文中使用绑定变量,如SQLplus,JDBC或ADO.NET? – Codo