问题描述
嗨,汤姆,
我在和DBMS_ASSERT正在尝试ENQUOTE_NAME函数。
请在下面的输出中找到。
SQL*Plus: Release 11.2.0.1.0 Production on Sat Jan 23 12:23:25 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: system
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> SELECT dbms_Assert.enquote_name('123Ancnin',false) FROM dual;
SELECT dbms_Assert.enquote_name('123Ancnin',false) FROM dual
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL> SELECT dbms_Assert.enquote_name("123Ancnin",false) FROM dual;
SELECT dbms_Assert.enquote_name("123Ancnin",false) FROM dual
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL> SELECT dbms_Assert.enquote_name('123Ancnin') FROM dual;
DBMS_ASSERT.ENQUOTE_NAME('123ANCNIN')
--------------------------------------------------------------------------------
"123ANCNIN"
SQL> SELECT dbms_Assert.enquote_name('123Ancnin',FALSE) FROM dual;
SELECT dbms_Assert.enquote_name('123Ancnin',FALSE) FROM dual
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL> SET SERVEROUTPUT ON
SQL> EXEC DBMS_OUTPUT.put_line(SYS.DBMS_ASSERT.enquote_name('quoted and remains
lowercase', FALSE));
"quoted and remains lowercase"
PL/SQL procedure successfully completed.
SQL> SELECT SYS.DBMS_ASSERT.enquote_name('quoted and remains lowercase', FALSE)
FROM DUAL;
SELECT SYS.DBMS_ASSERT.enquote_name('quoted and remains lowercase', FALSE) FROM
DUAL
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL>
你能帮我指出我使用时犯的错误吗FALSE是否使用enqoute_name?为什么嵌套在DBMS_OUTPUT中时它能工作?
致以问候,
阿尔潘
我在和DBMS_ASSERT正在尝试ENQUOTE_NAME函数。
请在下面的输出中找到。
SQL*Plus: Release 11.2.0.1.0 Production on Sat Jan 23 12:23:25 2016
Copyright (c) 1982, 2010, Oracle. All rights reserved.
Enter user-name: system
Enter password:
Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
SQL> SELECT dbms_Assert.enquote_name('123Ancnin',false) FROM dual;
SELECT dbms_Assert.enquote_name('123Ancnin',false) FROM dual
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL> SELECT dbms_Assert.enquote_name("123Ancnin",false) FROM dual;
SELECT dbms_Assert.enquote_name("123Ancnin",false) FROM dual
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL> SELECT dbms_Assert.enquote_name('123Ancnin') FROM dual;
DBMS_ASSERT.ENQUOTE_NAME('123ANCNIN')
--------------------------------------------------------------------------------
"123ANCNIN"
SQL> SELECT dbms_Assert.enquote_name('123Ancnin',FALSE) FROM dual;
SELECT dbms_Assert.enquote_name('123Ancnin',FALSE) FROM dual
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL> SET SERVEROUTPUT ON
SQL> EXEC DBMS_OUTPUT.put_line(SYS.DBMS_ASSERT.enquote_name('quoted and remains
lowercase', FALSE));
"quoted and remains lowercase"
PL/SQL procedure successfully completed.
SQL> SELECT SYS.DBMS_ASSERT.enquote_name('quoted and remains lowercase', FALSE)
FROM DUAL;
SELECT SYS.DBMS_ASSERT.enquote_name('quoted and remains lowercase', FALSE) FROM
DUAL
*
ERROR at line 1:
ORA-00904: "FALSE": invalid identifier
SQL>
你能帮我指出我使用时犯的错误吗FALSE是否使用enqoute_name?为什么嵌套在DBMS_OUTPUT中时它能工作?
致以问候,
阿尔潘
专家解答
布尔型数据类型(false/True)是*PLSQL*数据类型。因此,它不会在SQL调用中工作。因此,这与DBMS_ASSERT无关,它与任何具有PLSQL数据类型的东西相关,您正试图从SQL中使用它。
例如,
因为它返回一个布尔值
希望这个能帮上忙。
例如,
SQL> select DBMS_UTILITY.IS_CLUSTER_DATABASE from dual;
select DBMS_UTILITY.IS_CLUSTER_DATABASE from dual
*
ERROR at line 1:
ORA-00902: invalid datatype
因为它返回一个布尔值
希望这个能帮上忙。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




