Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Query in Select query operation

Former Member
0 Likes
508

Please excuse me for posting this again.

I'm stuck up with this for 3 days. Lenghty post pls do read and help me.

How is the select query going to be changed in the SAP so that the original database behind it understands it. I want to know the operation of IN operation in where clause where in we can use ranges.

I'm asking this because I'm facing a problem using Native SQL.

Query is like this:

EXEC SQl.

OPEN C1 for

SELECT field1 from table@domain where field2 IN :ABAP_VAR.

ENDEXEC.

EXEC SQL.

FETCH C1 NEXT INTO :VAR1 , :VAR2

ENDEXEC.

Oracle usually recognises this statement IN ( '2222' , '3658' , '6895' )

But here this field that is build dynamically like this is not recognising them as seperate fileds but instead it is taking them as a single string and not selecting anything.

But if a single value is passed it is fetching the data into the cursor. And the code is working fine.

Any help in this is highly appreciable.

1 ACCEPTED SOLUTION
Read only

former_member186741
Active Contributor
0 Likes
448

"if a in r_range" is is effectively: does the value held in 'a' comply with the values held in range 'r_range'. Ranges can hold NE, patterns etc so this can get quite complex.

You can see that it is very different from the SQL type IN.

If your range hold several values you could unstrip it into a string varaible so that it ended up having a value something like: ( '2222' , '3658' , '6895' ). Not sure if you need the '(' but it would be something like this:

eg,

assuming your range is simple and only holds 'I' and 'EQ' values:

data v_string type string.

loop at r_range.

concatenate v_string '@''' r_range-low '''@' into v_string.

endloop.

REPLACE

ALL OCCURRENCES OF '@'

IN v_string

WITH ' '.

Then you can use:

SELECT field1 from table@domain where field2 IN :v_string.

1 REPLY 1
Read only

former_member186741
Active Contributor
0 Likes
449

"if a in r_range" is is effectively: does the value held in 'a' comply with the values held in range 'r_range'. Ranges can hold NE, patterns etc so this can get quite complex.

You can see that it is very different from the SQL type IN.

If your range hold several values you could unstrip it into a string varaible so that it ended up having a value something like: ( '2222' , '3658' , '6895' ). Not sure if you need the '(' but it would be something like this:

eg,

assuming your range is simple and only holds 'I' and 'EQ' values:

data v_string type string.

loop at r_range.

concatenate v_string '@''' r_range-low '''@' into v_string.

endloop.

REPLACE

ALL OCCURRENCES OF '@'

IN v_string

WITH ' '.

Then you can use:

SELECT field1 from table@domain where field2 IN :v_string.