Campo de datos SQL temporal

Actualmente estoy devolviendo un valor booleano como "1" o "0" o el valor de una columna, digamos la columna A en uno de mis procedimientos almacenados y funciona perfectamente, sin embargo, en una de las aplicaciones estoy tratando de obtener un valor como este

string temp = reader.TryGetValue("ColumnA", out licenseStatus) ? temp : string.Empty;

El procedimiento almacenado está haciendo algo como esto,

if @datafield = 1
    return 1
else if @datafield = 2 AND @datafield2 = 3
    return 0
else
    return (SELECT ColumnA.table2 FROM table1 INNER JOIN table2 on table1.id and table2.id Where @datafield3 = 0)

Ahora quiero devolver el resultado como el valor de ColumnA siempre en lugar de enviar "0" o "1", ya que no se me permite realizar cambios en el código de la aplicación.

Es posible ? Tampoco puedo hacer ningún cambio en el valor de ColumnA.

EDITAR

Ya mencioné en mi pregunta que el procedimiento almacenado está haciendo lo que se supone que debe hacer pero no funciona con mi código, ya que estoy devolviendo 1 o 0 en algún momento y mi código no lo recibe como columna A, por lo que está configurándolo vacío. Quiero devolver 0 o 1 como valor de ColumnA pero al mismo tiempo no quiero cambiar el valor de columnA en table2 ..

:)

Respuestas a la pregunta(2)

Su respuesta a la pregunta