首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >操作数中OpenSQL的适当类型

操作数中OpenSQL的适当类型
EN

Stack Overflow用户
提问于 2019-02-27 14:37:28
回答 3查看 94关注 0票数 3

我有导入my_values的功能模块

my_values是字符串的自定义内部表类型。

这个"my_values“变量包含例如:"foo”、"bar“

我希望从表Z_MYTAB中选择所有值,其中列my_col位于my_values中。

我试过这个:

代码语言:javascript
复制
SELECT * FROM Z_MYTAB WHERE 
       my_col in @my_values INTO TABLE @DATA(my_rows).

但是这个错误消息失败了:

表my_values有错误的行结构

)这封信被翻译成英文。原版可能略有不同)

我可以在my_values上循环,但我想避免这种情况。

如何使用作为内部表的主机变量执行SQL IN

EN

回答 3

Stack Overflow用户

发布于 2019-02-27 14:57:47

只有使用IN表才能使用范围进行选择。

将内部表转换为范围表可以如下所示:

代码语言:javascript
复制
DATA ltr_value TYPE RANGE OF string.

ltr_value  = VALUE #( FOR <my_value> IN my_values
                      ( sign   = 'I'
                        option = 'EQ'
                        low    = <my_value> )
                    ).
票数 3
EN

Stack Overflow用户

发布于 2019-02-27 15:04:58

在开阔地可以分为两类:

代码语言:javascript
复制
SELECT ... WHERE my_col IN ( value1, value2 , value3)

在这种情况下,不能使用主机表达式作为右操作数。

代码语言:javascript
复制
SELECT ... WHERE my_col IN sel_tab[]

在本例中,sel_tab是一个范围,如

因此,您可以使用以下内容:

代码语言:javascript
复制
DATA sel_tab type range of string.

sel_tab = value #( for ls in my_values ( sign = 'I' option = 'EQ' low = ls ) ).
SELECT * FROM Z_MYTAB WHERE
       my_col in @sel_tab[] INTO TABLE @DATA(my_rows).

诚挚的问候

票数 3
EN

Stack Overflow用户

发布于 2019-03-04 10:13:23

用户JozsefSzikszai向我指出“为所有条目选择”。

我在文件里找到了这个:

对于基本行类型,必须为comp指定伪组件table_line。

请参阅:itab.htm

代码语言:javascript
复制
IF my_values is initial.
  exit.
endif.

SELECT * FROM Z_MYTAB
  FOR ALL ENTRIES IN @my_values WHERE
  column_name = @my_values-table_line
  INTO TABLE @DATA(result_rows).
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54907886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档