临时SQL数据字段

时间:2012-11-01 11:57:06

标签: sql sql-server-2008 stored-procedures

目前我返回一个布尔值为“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的值..

     

:)

2 个答案:

答案 0 :(得分:0)

您可以使用CASE

select 
    case @datafield 
    when 1 then 1 
    when 2 then 0 
    when 3 then 0 
    else ColumnA 
    end as ColumnA
from ....

答案 1 :(得分: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)

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