我正在用C#代码调用SQL查询。 如何保留我已在SQL中声明的变量声明? 这是我的代码:
SqlConnection connection = new SqlConnection(conString);
connection.Open();
string s = @"
declare @ttt int
set @ttt = 6
select @ttt";
SqlCommand cmd = new SqlCommand(s, connection);
int retVal = (int)cmd.ExecuteScalar();
s = @"select @ttt";
cmd.CommandText = s;
retVal = (int)cmd.ExecuteScalar();
connection.Close();
第二个ExecuteScalar()的错误是:必须声明标量变量“@ttt”。 (我必须将它拆分成多个查询,因为我在C#代码中进行了计算等。 问题是来自c#代码的连接范围和SQL查询。
答案 0 :(得分:1)
变量是“批量”范围的。每个命令执行等同于(至少)一个批处理,因此第一批中声明的变量都不会在第二批中显示。
解决此问题的唯一方法是将两个SQL块组合在一起,或者重新声明并分配所有批次中的变量。
有关详细信息,请参阅documentation。
答案 1 :(得分:1)
变量仅在当前命令的范围内。
如果要在第一个查询中返回@ttt的值,那么可能在第二个查询中,您可以再次声明该变量,然后将该变量设置为从第一个查询返回的值。
答案 2 :(得分:0)
从第一个命令开始,@ttt中的值将在retVal
中。当你已经拥有值时,为什么还需要进行另一个查询?