我想将paramtere传递给sql标量函数,它将返回一个我想要显示的值。
GetValue
是一个sql标量函数
private int GetNewValue()
{
int Value = 0;
string connectionString GetConfigurationSettingValue("ConnectionString");
int Days = 20;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand cmd = new SqlCommand("GetValue", connection))
{
cmd.CommandType = System.Data.CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@Time", Days));
Value = Convert.ToInt32(cmd.ExecuteScalar());
}
}
return (Value);
但是我无法从Sql Scalar函数中获取值也没有出现任何错误
我有什么遗漏的东西吗?
答案 0 :(得分:3)
您需要将标量函数视为存储过程,并且我还建议始终使用模式前缀 - 对于函数而言,这是非常重要的!使用dbo.GetValue
- 而不仅仅是GetValue
。
您的代码将如下所示:
using (SqlConnection conn = new SqlConnection("-your-conn-string-here-"))
using (SqlCommand cmd = new SqlCommand("dbo.GetValue", conn))
{
cmd.Parameters.Add("@Time", SqlDbType.Int).Value = Days;
// define a return value from the stored function
cmd.Parameters.Add("@return", SqlDbType.Int).Direction = ParameterDirection.ReturnValue;
// set type to be a stored procedure
cmd.CommandType = CommandType.StoredProcedure;
// open connection, execute non query
conn.Open();
cmd.ExecuteNonQuery();
// the return value parameter now contains the result
object returnValue = cmd.Parameters["@return"].Value;
// close connection
conn.Close();
}