用户定义的库
语法
代码语法CREATE [OR REPLACE] LIBRARY [LANGUAGE SQLSCRIPT] [DEFAULT SCHEMA ]AS BEGIN [] []END;ALTER LIBRARY [LANGUAGE SQLSCRIPT] [DEFAULT SCHEMA ]AS BEGIN [] []END;DROP LIBRARY ; ::= [.]; ::= [{}...] ::= ; ::= VARIABLE [CONSTANT] [NOT NULL] [] ::= PUBLIC | PRIVATE ::= ::= { DEFAULT | '=' } ::= [{}...] ::= ; ::= | ::= PROCEDURE [] [] AS BEGIN [SEQUENTIAL EXECUTION] END ::= [LANGUAGE ] [SQL SECURITY ] [READS SQL DATA] ::= FUNCTION [] RETURNS [] AS BEGIN END ::= [LANGUAGE ] [SQL SECURITY ] [READS SQL DATA]
描述
库是一组相关的变量、过程和函数。有两种类型的库:内置库和用户定义的库。内置库是系统提供的具有特殊函数的库。用户定义的库是由用户在 SQLScript 中写入的库。用户可以创建其自己的库并将其用于其他过程或函数。库设计为仅在 SQLScript 过程或函数中使用,在其他 SQL 语句中不可用。
用户定义的库具有以下特征:
- 为多个过程和函数创建一个元数据对象。通过将所有相关过程和函数合并到一个元数据对象中,可以降低元数据管理成本。另一方面,如果库的一个函数或过程无效,则整个库将变为无效。
- 确保相关对象的原子性,因为它们作为单个对象进行管理。
- 很容易处理库中过程或函数的可见性。当应用程序越来越大且复杂时,开发人员可能希望仅在其应用程序中使用某些过程或函数,而不是将它们打开给应用程序用户。库可以轻松地解决此要求,方法是对每个库成员使用访问模式
PUBLIC 和 PRIVATE。
- 常量和非常量变量在库中可用。您可以为常用的常量值声明一个常量变量,并使用变量名,而不是每次都指定值。非常量值在会话期间处于活动状态,并且您可以随时访问该值(如果会话可用)。 备注对库具有 EXECUTE 特权的任何用户都可以通过
USING 语句使用该库,还可以访问其公共成员。
限制
当前适用以下限制:
- 库变量的使用当前受到限制。例如,无法在
SELECT INTO 语句的 INTO 子句和动态 SQL 的 INTO 子句中使用库变量。通过使用常规标量变量作为中间值,可以轻松规避此限制。
- 由于会话变量用于库变量,因此可以(如果您具有必要的权限)读取和修改(其他)会话的任意库变量。