如何从ASP.NET在text / nvarchar SQL Server中执行变量

时间:2018-10-20 09:39:52

标签: asp.net sql-server

dim sal as double = 20000

表格:

------------------------------
NO. code       formula
-----------------------------
1   101        sal * (0.2/100)        
2   102        sal * (0.1/100)  
--------------------------------

如何在ASP.NET代码中执行以text / nvarchar形式存储在SQL Server列中的公式?

2 个答案:

答案 0 :(得分:0)

如果我正确理解了您的问题,则您有一个已经作为字符串存储在表中的公式,并且您希望将该公式放入ASP.NET应用程序并在代码中执行它。

如果是这种情况,那么最快的方法是在SQL Server中执行公式,替换变量,然后从那里获取值。

如果sal已存储在公式中(与示例中提供的相同),则需要执行以下操作:

Dim sal as double = 20000
Dim returned_value As String = ""

Dim sql As String = "SELECT formula FROM FormulaTable WHERE Code = 101"

    Using connection As New SqlConnection(ConnectionString)
        command As New SqlCommand(sql, connection)

        connection.Open()
        Dim formula As String = command.ExecuteScalar().toString()
        connection.Close() 

        sql = "SELECT " + formula.Replace("sal", sal.toString())

        connection.Open()
        returned_value = command.ExecuteScalar().toString()

        connection.Close()
    End Using 

上面的示例将获取公式,并将sal替换为参数@sal,然后将该公式保存在formula中。然后,我们只需切换查询,并为参数提供代码中已经拥有的sal的值,然后调用command.ExecuteScalar()将值保存在returned_value内。

现在,returned_value是该公式的结果,您可以将其强制转换为double或任何代码要求。

答案 1 :(得分:0)

如果您只是想说如何显示sal嵌入的公式,而不是数字,我建议您

#include <stdio.h> /* for puts() */
#include <string.h> /* for strlen() */

int main(void)
{
  char a[] = ""; /* The same as: char a[1] = ""; */

  /* Possibility 1: */
  if (0 == a[0]) /* alternatively use '\0' == a[0] */
  {
    puts("a is an empty string.");
  }

  /* Possibility 2: */
  if (0 == strlen(a))
  {
    puts("a has length zero.");
  }
}

如果您是说如何在查询中使用sal计算,我建议您

SET mmsales = (SELECT SUM(total_amount)
               FROM transaction_tbl
               WHERE MONTH(transaction_date) = MONTH(CURRENT_DATE())
                 AND YEAR(transaction_date) = YEAR(CURRENT_DATE()));

如果您在公式中使用变量,只需将Formula更改为Example的变量:

select NO,code,'"+sal+"'+'*'+formula From Table

OR

select NO,code,"+sal+"*formula From Table

希望这对您兄弟有帮助