DBMS_ASSERT

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;