我正在尝试使用C#来执行sp_set_session_context
,其第二个参数@value
的类型为sql_variant。但似乎没有办法让我指出我为@value提供的价值有点。这是代码:
DbCommand cmd = connection.CreateCommand();
cmd.CommandText = "sp_set_session_context";
cmd.CommandType = System.Data.CommandType.StoredProcedure;
DbParameter param = cmd.CreateParameter();
param.ParameterName = "@key";
param.Value = "key";
cmd.Parameters.Add(param);
param = cmd.CreateParameter();
param.ParameterName = "@value";
param.Value = true;
cmd.Parameters.Add(param);
cmd.ExecuteNonQuery();
上面的代码执行:
exec sp_set_session_context @key=N'key',@value=1
由于@value
是sql_invariant,因此它将1视为int而不是bit。我需要的是:
exec sp_set_session_context @key=N'key',@value=cast(1 as bit)
除了执行SQL文本而不是直接调用存储过程之外,还有其他方法吗?