我创建了一个接受表类型的存储过程。它是一种复杂类型,用于动态过滤计算视图。过程和表类型如下所示:
CREATE PROCEDURE DynamicFilter
(
it_filterOptions FilterTable
) LANGUAGE SQLSCRIPT
AS
BEGIN
--Do stuff with filter table
END;
Table Type: FilterTable
-------------------------------------
| ColumnName | Operator | Value |
-------------------------------------
| ColumnA | EQ | 5 |
| ColumnB | GT | 10 |
-------------------------------------
使用Data Services,我需要能够调用该过程并传入it_filterOptions的值。
sql('SomeDataSource', 'CALL DynamicFilter(it_filterOptions => something?');
但是,从Data Services,当我调用该程序时,我将执行" SQL"而不是" SQLScript",因为执行上下文。因此,我无法声明和构建局部变量。因此,我无法弄清楚如何构建我的it_filterOptions变量。
答案 0 :(得分:1)
实现此目的的另一种方法:
创建具有相同结构“FilterTable”的全局临时表。在执行过程之前,按如下所示更改过程并将数据插入到该全局临时表中。
CREATE PROCEDURE DynamicFilter()LANGUAGE SQLSCRIPT
AS
BEGIN
- 直接访问该全局临时表
- 使用过滤表
END;