可以执行动态 SQL 支持的任何 SQL 语句。
要执行 SQL 语句,需要定义一个使用 SQL (DTW_SQL) 语言环境的函数,并在该函数的语言环境可执行部分 包含 SQL 语句。
例子:一个运行 SQL SELECT 语句的 SQL 函数:
%function(DTW_SQL) getOrders() {
SELECT cust, custid, custorder FROM mylibrary.customers
%}
确认控制
缺省情况下,SQL 语言环境在确认控制下运行,遵循调节确认控制的所有规则。
要获取有关事务管理的更多信息,请参阅管理 Net.Data 应用程序中的事务。
OUT 和 INOUT 表格
如果您在函数定义中指定 OUT 或 INOUT Net.Data 表格,并且 SQL 语句返回结果集,则 SQL 语言环境将 在指定的表格中存储每个结果集。然后,您就可以在宏中使用该表格。如果没有指定 OUT 表格, SQL 语言环境将使用缺省的表格。
嵌套的 SQL 语句
您可以从一个 SQL 函数的 ROW 块中调用其它 SQL 函数。在每个 SQL 函数中使用唯一的 Net.Data 表格名, 否则,可能出现无法预知的结果。
例子:从 ROW 块或另一个 SQL 函数调用 SQL 函数
%define mytable1 = %TABLE
%define mytable2 = %TABLE
%FUNCTION(DTW_SQL) sql2 (IN p1, OUT t2) {
select * from NETDATA.STAFFINF where projno='$(p1)'
%REPORT {
%ROW { $(N1) is $(V1) %}
%}
%}
%FUNCTION(DTW_SQL) sql1 (OUT t1) {
select * from NETDATA.STAFFINF
%REPORT {
%ROW { @sql2(V1, mytable2) %}
%}
%}
%HTML(netcall1) { @sql1(mytable1) %}
SQL 语言环境支持那些为支持 DB2 而设计的变量。 例如,DATABASE 变量指定了执行 SQL 语句时 SQL 语言环境所连接到的数据源。以下列表指定了 对 SQL 语言环境所支持的变量。 请参阅Net.Data 参考,以获取对这些变量的描述、变量的语法以及示例。
SQL 语言环境支持表 5中列出的数据类型
| BLOB(1) | DOUBLE | SMALLINT |
| CHAR | DOUBLEPRECISION | TIME |
| CLOB(1) | FLOAT | TIMESTAMP |
| DATE | GRAPHIC | VARCHAR |
| DBCLOB(1) | INTEGER | VARGRAPHIC |
| DECIMAL | REAL |
|
(1) 这些数据类型不能作为参数传递到存储过程调用。要了解对于存储过程所支持的数据类型, 请参阅存储过程语法
请参阅数据类型考虑,以了解对于 LOB 和 DATALINK 数据类型的特殊考虑事项。
在计划您的环境时,请考虑以下限制:
请参阅管理多数据库连接,以获取有关这些限制的更多信息。