DBMS_ASSERT内置包用于对输入值的属性进行验证。
DBMS_ASSERT子程序总览
子程序 | 说明 |
ENQUOTE_LITERAL Function | 用单引号引用一个字符串字面量。 |
ENQUOTE_NAME Function | 用双引号引用字符串,并检查其是否为合法的SQL标识符。 |
NOOP Function | 不做任何检查,直接返回值。 |
QUALIFIED_SQL_NANE Function | 验证输入的字符串是否是一个合法的SQL名称。 |
SCHEMA_NAME Function | 验证输入的字符串是否是一个现有的模式名称。 |
SIMPLE_SQL_NAME Function | 验证输入的字符串是否是一个简单的SQL名称。 |
SQL_OBJECT_NAME Function | 验证输入的字符串是否是一个现有的SQL对象的合法名称。 |
ENQUOTE_LITERAL
该函数用于在字符串字面量的开头和结尾添加单引号。
语法
DBMS_ASSERT.ENQUOTE_LITERAL (
str VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
str | 待引用的字符串。 |
返回值
返回值 | 说明 |
VARCHAR2 | 添加单引号后的结果。 |
示例
该示例展示了如何为字符串添加引号引用。
SELECT DBMS_ASSERT.ENQUOTE_LITERAL('Hello PolarDB') FROM dual;
enquote_literal
-----------------
'Hello PolarDB'
(1 row)
ENQUOTE_NAME
该函数用于在字符串前后添加双引号引用,并检查结果是否是一个合法的简单SQL名称。
语法
DBMS_ASSERT.ENQUOTE_NAME (
str VARCHAR2,
capitalize BOOLEAN DEFAULT TRUE)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
str | 待引用的字符串。 |
capitalize | (可选参数)默认值为TRUE,将不在双引号内的str的字母转为大写。 |
返回值
返回值 | 说明 |
VARCHAR2 | 添加双引号后的结果。 |
示例
该示例展示了如何为字符串添加双引号。
SELECT DBMS_ASSERT.ENQUOTE_NAME('Hello PolarDB') FROM dual;
enquote_name
-----------------
"HELLO POLARDB"
(1 row)
NOOP
该函数不做任何检查,直接返回值。
语法
DBMS_ASSERT.NOOP (
str VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
str | 输入字符串。 |
返回值
返回值 | 说明 |
VARCHAR2 | 返回结果。 |
示例
该示例展示了NOOP函数的调用结果。
SELECT DBMS_ASSERT.NOOP('Hello PolarDB') FROM dual;
noop
---------------
Hello PolarDB
(1 row)
QUALIFIED_SQL_NANE
该函数用于验证输入的字符串是否是一个合法的SQL名称。
语法
DBMS_ASSERT.QUALIFIED_SQL_NAME (
str VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
str | 输入字符串。 |
返回值
返回值 | 说明 |
VARCHAR2 | 返回结果。如果输入字符串不是一个合法的SQL名称,则抛出异常。 |
示例
该示例展示了如何验证输入的字符串是否是一个合法的SQL名称。
-- a qualified SQL name
SELECT DBMS_ASSERT.QUALIFIED_SQL_NAME('HelloPolarDB') FROM dual;
qualified_sql_name
--------------------
HelloPolarDB
(1 row)
-- invalid name
SELECT DBMS_ASSERT.QUALIFIED_SQL_NAME('Hello PolarDB') FROM dual;
ERROR: invalid qualified SQL name
SCHEMA_NAME
该函数用于验证输入的字符串是否是一个现有的模式名称。
语法
DBMS_ASSERT.SCHEMA_NAME (
str VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
str | 输入字符串。 |
返回值
返回值 | 说明 |
VARCHAR2 | 返回结果。如果输入字符串不是一个现有的模式名称,则抛出异常。 |
示例
该示例展示了如何验证输入的字符串是否是一个现有的模式名称。
-- an existing schema name.
SELECT DBMS_ASSERT.SCHEMA_NAME('pg_catalog') FROM dual;
schema_name
-------------
pg_catalog
(1 row)
-- a non-existing schema name.
SELECT DBMS_ASSERT.SCHEMA_NAME('pg_catalog__') FROM dual;
ERROR: invalid schema name
SIMPLE_SQL_NAME
该函数用于验证输入的字符串是否是一个简单的SQL名称。
语法
DBMS_ASSERT.SIMPLE_SQL_NAME (
str VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
str | 输入字符串。 |
返回值
返回值 | 说明 |
VARCHAR2 | 返回结果。如果输入字符串不是一个简单的SQL名称,则抛出异常。 |
示例
该示例展示了如何验证输入的字符串是否是一个简单的SQL名称。
-- a simple SQL name
SELECT DBMS_ASSERT.SIMPLE_SQL_NAME('hellopolar') FROM dual;
simple_sql_name
-----------------
hellopolar
(1 row)
-- not a simple SQL name
SELECT DBMS_ASSERT.SIMPLE_SQL_NAME('hello polar') FROM dual;
ERROR: invalid simple SQL name
SQL_OBJECT_NAME
该函数用于验证输入的字符串是否是一个现有的SQL对象的合法名称。
语法
DBMS_ASSERT.SQL_OBJECT_NAME (
str VARCHAR2)
RETURN VARCHAR2;
参数说明
参数 | 说明 |
str | 输入字符串。 |
返回值
返回值 | 说明 |
VARCHAR2 | 返回结果。如果输入字符串不是一个SQL对象的名称,则抛出异常。 |
示例
该示例展示了如何验证输入的字符串是否是一个现有的SQL对象的合法名称。
CREATE TABLE test(a int);
SELECT DBMS_ASSERT.SQL_OBJECT_NAME('test') from dual;
sql_object_name
-----------------
test
(1 row)
SELECT DBMS_ASSERT.SQL_OBJECT_NAME('notest') from dual;
ERROR: invalid object name
DROP TABLE test_a;