您的位置:首页 > 数据库

利用数据库进行表达式运算

2010-07-21 17:26 211 查看
正常情况下来了一串表达式,首先需要对表达式进行解析成逆波兰式,然后再通过堆栈来完成表达式的运算,现在数据库几乎遍及所有运行系统,我们可以通过数据库的存储过程来完成表达式的运算,再不用自己费心费神了。(下面采用的环境:SQL 2000 + C#)

存储过程:

CREATE PROCEDURE SYS_CALCULATE(
@EXPRESS VARCHAR(50),
@RESULT FLOAT OUTPUT)
AS
BEGIN
SET @RESULT = 0
DECLARE @SQL NVARCHAR(256)
SET @SQL = 'SELECT @RESULT=' + @EXPRESS

EXEC SP_EXECUTESQL @SQL , N'@RESULT FLOAT OUTPUT' , @RESULT OUTPUT
END

调用存储过程进行数值运算:

public enumErrorCode Calculate(string strExpress, out float fResult)
{
try
{
SqlConnection conn;
if (ConnectDB(out conn))
{
SqlCommand command = new SqlCommand("SYS_CALCULATE", conn);
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new SqlParameter("EXPRESS", strExpress));
SqlParameter param1 = new SqlParameter("RESULT", SqlDbType.Float);
param1.Direction = ParameterDirection.Output;
command.Parameters.Add(param1);
command.ExecuteNonQuery();

fResult = float.Parse(param1.Value.ToString());
conn.Close();
return enumErrorCode.enumSuccess;
}
else
{
fResult = 0;
return enumErrorCode.enumConnectError;
}
}
catch (SqlException e)
{
fResult = 0;
return enumErrorCode.enumException;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐