How are you parsing it and what are you doing with the results?
If you write code that builds a SQL statement, you are vulnerable to SQL injection.
Like suppose you write:
set @myquery = 'select customer_name from customer where customer_id = ''' + @custid + ''''
execute (@myquery)
And suppose you get @custid ultimately from a user input, say a text box on a form.
If the user enters
42
then the query becomes
select customer_name from customer where customer_id = '42'
Cool. Presumably that's what you intended.
But suppose the user enters
42'; update customer set balance_due = 0 where customer_id = '42
Now your query becomes
select customer_name from customer where customer_id = '42'; update customer set balance_due = 0 where customer_id = '42'
and the customer has just zeroed out his balance due. Or he might delete whole tables, etc.
The moral of the story is, Never ever EVER build a SQL query dynamically using user inputs. It gives users the ability to do anything they want to your database.
The right way to do this is:
select customer_name from customer where customer_id = @custid
Then if the user tries to use SQL injection, they just create a not-found on the record because the SQL string they type in is not a valid customer id. (Or if you don't do any type checking, they may get a data conversion error. Which is also bad and you should prevent that, but not as bad as SQL injection.)
Avoid building SQL statements dynamically. Whenever possible, pass values in as parameters.
Okay, sometimes you just have to build statements dynamically. The most common case I can think of is a selection-criteria screen where the user can type in values for 10 different criteria -- date in this range, name contains this, amount less than that, etc -- but each condition is optional, and if the user doesn't type a value, then you don't want that test as part of the query. So there are millions of possible combinations and you want to put the query together on the fly. That's fine, but DON'T insert the values when building the query on the fly. Insert parameters, and then set the parameters.
If values are generated within the program rather than from user input, and you are absolutely sure that these values will never contain SQL injection text, then it's safe to build values into your SQL. The only time I do this is when I have fixed, hard-coded values. Like if I might build code that says "where type=1" or it might say "where type=2", and the 1 and 2 are hard-coded like that in the program, not a user input. If in doubt, create parameters.