首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle bind参数占位符中允许使用哪些字符?

问Oracle bind参数占位符中允许使用哪些字符?
EN

Stack Overflow用户
提问于 2011-10-13 18:18:28
回答 2查看 3K关注 0票数 7

谁能告诉我在哪里列出了绑定变量名称允许的字符?我花了几个小时钻研Oracle SQL文档,但一无所获。

我指的是以下内容中的":id“:

代码语言:javascript
复制
SELECT * FROM mytable WHERE id = :id

例如,点可以像":some.id“一样在那里使用吗?它的功能会和没有点的版本完全一样吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-17 05:47:25

这两页状态绑定变量必须是“合法的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

除了DB链接之外,我在这个页面上找不到任何说明点是标识符(例如,表或绑定变量名)的合法部分的内容。尽管$和#是合法的,但它们甚至不被推荐,所以“。可能行得通,但显然不被推荐(在此页面上甚至没有提到合法)

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

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

我可以在绑定变量中使用带点的标识符,但当绑定变量中有点时,我必须在绑定变量两边加上双引号。

代码语言:javascript
复制
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模式对象命名页上的句子,它告诉我:

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

票数 5
EN

Stack Overflow用户

发布于 2012-07-20 04:55:07

我也很难找到这方面的官方Oracle文档:http://docs.oracle.com/cd/E14072_01/appdev.112/e10646/oci04sql.htm#i420655

最重要的是,您可以引用占位符(:"_normallyinvalid"),然后前面链接中列出的大多数规则都不再相关。我找不到任何甲骨文文档提供这个建议;只是在互联网上提供了一些提示。

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

https://stackoverflow.com/questions/7752632

复制
相关文章

相似问题

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