我有导入my_values的功能模块
my_values是字符串的自定义内部表类型。
这个"my_values“变量包含例如:"foo”、"bar“
我希望从表Z_MYTAB中选择所有值,其中列my_col位于my_values中。
我试过这个:
SELECT * FROM Z_MYTAB WHERE
my_col in @my_values INTO TABLE @DATA(my_rows).但是这个错误消息失败了:
表my_values有错误的行结构
)这封信被翻译成英文。原版可能略有不同)
我可以在my_values上循环,但我想避免这种情况。
如何使用作为内部表的主机变量执行SQL IN?
发布于 2019-02-27 14:57:47
只有使用IN表才能使用范围进行选择。
将内部表转换为范围表可以如下所示:
DATA ltr_value TYPE RANGE OF string.
ltr_value = VALUE #( FOR <my_value> IN my_values
( sign = 'I'
option = 'EQ'
low = <my_value> )
).发布于 2019-02-27 15:04:58
在开阔地可以分为两类:
SELECT ... WHERE my_col IN ( value1, value2 , value3)在这种情况下,不能使用主机表达式作为右操作数。
SELECT ... WHERE my_col IN sel_tab[]在本例中,sel_tab是一个范围,如
因此,您可以使用以下内容:
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).诚挚的问候
发布于 2019-03-04 10:13:23
用户JozsefSzikszai向我指出“为所有条目选择”。
我在文件里找到了这个:
对于基本行类型,必须为comp指定伪组件table_line。
请参阅:itab.htm
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).https://stackoverflow.com/questions/54907886
复制相似问题