0

目前,我正在返回一个布尔值作为“1”或“0”或列的值,比如说我的一个存储过程中的列 A,它工作得很好,但是在一个应用程序中,我试图获得这样的值

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

存储过程正在做这样的事情,

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)

现在我想将结果作为 ColumnA 的值返回,而不是发送“0”或“1”,因为我不允许更改应用程序中的代码。

可能吗 ?我也无法对 ColumnA 值进行任何更改。

编辑

我已经在我的问题中提到,存储过程正在做它应该做的事情,但没有使用我的代码,因为我在某个时候返回 1 或 0 并且我的代码没有将它作为 columnA ,所以它设置为空,我想返回 0 或 1 作为 ColumnA 的值,但同时我不想更改 table2 中 columnA 的值。

:)

4

2 回答 2

0

您可以使用CASE

select 
    case @datafield 
    when 1 then 1 
    when 2 then 0 
    when 3 then 0 
    else ColumnA 
    end as ColumnA
from ....
于 2012-11-01T12:00:08.203 回答
0
if @datafield = 1
set ColumnA.table2=1
else if @datafield = 2 AND @datafield2 = 3
set ColumnA.table2= 0
else
return (SELECT ColumnA.table2 FROM table1 INNER JOIN table2 on table1.id and table2.id Where @datafield3 = 0)

如果它只是一个选择查询,那么它不会更改您的表数据,而是会返回您想要的

于 2012-11-01T12:38:18.423 回答