0

現在、ブール値を「1」または「0」として返すか、列の値を返します。たとえば、ストアドプロシージャの1つで列Aを使用すると、完全に機能しますが、アプリケーションの1つでは、このような値を取得しようとしています。

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)

アプリケーションでコードを変更することは許可されていないため、「0」または「1」を送信するのではなく、常にColumnAの値として結果を返したいと思います。

出来ますか ?ColumnAの値もまったく変更できません。

編集

ある時点で1または0を返していて、コードがcolumnAとして取得していないため、ストアドプロシージャは想定どおりに動作しているが、コードでは機能していないことを質問ですでに説明しました。 ColumnAの値として0または1を返したいのですが、同時に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 に答える