在 TABLE 或 MAP 语句中应用 SQLEXEC

在 TABLE 或 MAP 语句中使用时,SQLEXEC 可以传递和接受参数。它可用于过程和查询,但不能用于数据库命令。

语法

此语法在 TABLE 或 MAP 语句中执行过程。

SQLEXEC (SPNAME *sp_name*,
[ID *logical_name*,]
{PARAMS *param_spec* | NOPARAMS})
参数 说明

| — | — |

SPNAME
用于开始子句以执行存储过程的必需关键字。
sp_name
指定要执行的存储过程的名称。
ID logical_name
定义过程的逻辑名称。使用此选项可在 TABLE 或 MAP 语句中多次执行该过程。仅执行一次过程时不是必需的。
PARAMS param_spec | NOPARAMS
指定该过程是否接受参数。必须使用这些选项之一(请参见 Using Input and Output Parameters )。

语法

此语法在 TABLE 或 MAP 语句中执行查询。

SQLEXEC (ID *logical_name*, QUERY ' *query* ',
{PARAMS *param_spec* | NOPARAMS})
参数 说明

| — | — |

ID logical_name
定义查询的逻辑名称。需要提供逻辑名称,以便从查询结果中提取值。ID logical_name 引用查询返回的列值。
QUERY ' sql_query '

指定要对数据库执行的 SQL 查询语法。它可以返回带有 SELECT 语句的结果,也可以使用 INSERT、UPDATE 或 DELETE 语句更改数据库。查询必须位于单引号内,并且必须全部包含在一行中。指定区分大小写的对象名称在数据库中的存储方式,例如在 Oracle 区分大小写名称的引号内。

SQLEXEC 'SELECT "col1" from "schema"."table"'
{::nomarkdown} <pre class="pre codeblock"> PARAMS param_spec NOPARAMS</code></pre> {:/} 定义查询是否接受参数。必须使用这些选项之一(请参见 Using Input and Output Parameters )。

如果要对驻留在与当前数据库不同的数据库上的表执行查询,则必须对该表指定不同的数据库名称。数据库名称与表名之间的分隔符应为冒号 (:)。

以下是一些示例用例:

select col1 from db1:tab1
select col2 from db2:schema2.tab2
select col3 from tab3
select col3 from schema4.tab4