Every parameter has a "Value" and a "Label." The "Value" is what the parameter passes to any filter or query variable reference to itself. The "Label" is what shows to the user as parameter choices. If all you have are three possible values, you don't really need a query for that. Just define the parameter options manually under the "Available Values" page and use the number for the "Value" and the text for the "Label." I have attached a screenshot of the setup.
The only time this might not be ideal is if occasionally one or two of the statuses are not valid options because there are no items with the corresponding status. In that case, just add a second column to your dataset query that uses a CASE statement to supply the text value for each corresponding integer value. Then use the calculated column as the "Label" and the Status column as the value.
SELECT DISTINCT STATUS, LABEL = CASE STATUS WHEN 4 THEN 'Open' WHEN 10 Then 'Approved' WHEN 30 THEN 'Requested' END
WHERE STATUS IN ('4','10','30')
By the way, the label data type does not change the data type of the parameter value itself. It would still be INT.