还记得sql中变量的声明吗?
本文关键字:声明 变量 sql 还记得 | 更新日期: 2023-09-27 18:06:59
我从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#代码中进行计算等。
变量只在当前命令的作用域中。
如果你在第一次查询中返回@ttt的值,那么也许在第二次查询中你可以再次声明该变量,然后将该变量设置为第一次查询返回的值。
变量是"批处理"作用域。每个命令执行等同于(至少)一个批处理,因此在第一个批处理中声明的变量在第二个批处理中都不可见。
解决这个问题的唯一方法是将两个SQL块合并到一个批处理中,或者在所有批处理中重新声明和分配变量。
查看文档获取更多信息
从第一个命令中,@ttt中的值将在retVal
中。当您已经拥有该值时,为什么还需要执行另一个查询?