This issue has been discussed before. There seems to be some limit to the number of variables in an IN, but I don't know what it is, and you never indicated the details needed about your environment which are requested in MUST READ BEFORE POSTING. Even before the limit is reached, there may be performance degradation if the list is very long.
If you have static SQL, you have to code all the host variables ahead of time. If you use dynamic SQL, you can build the statement on the fly with the desired number of variables in the where clause.