【问题标题】:Temporary SQL datafield临时 SQL 数据字段
【发布时间】:2012-11-01 11:57:06
【问题描述】:

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

:)

【问题讨论】:

  • 您是否必须使用最后一个 else 查询。否则,您可以使用下面回答的案例
  • 是的,我必须使用查询,但我可以创建一个新的数据字段,该数据字段将从查询中获取值,但主要问题是我根本不想更改 table2 中 ColumnA 的值
  • 整个过程是插入查询吗?如果不是,那么您发布的代码正是您想要做的。
  • 我更新了我的问题:)

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


【解决方案1】:
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)

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

【讨论】:

  • 干杯谢谢,但是在设置该数据字段时它也需要返回它,不知道该怎么做
【解决方案2】:

您可以使用CASE

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

【讨论】:

  • 它会改变表格中 ColumnA 的值吗?
猜你喜欢
  • 2013-11-24
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 2013-01-17
  • 2017-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多