记住sql中的变量声明

时间:2011-08-30 19:56:13

标签: c# sql

我正在用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查询。

3 个答案:

答案 0 :(得分:1)

变量是“批量”范围的。每个命令执行等同于(至少)一个批处理,因此第一批中声明的变量都不会在第二批中显示。

解决此问题的唯一方法是将两个SQL块组合在一起,或者重新声明并分配所有批次中的变量。

有关详细信息,请参阅documentation

答案 1 :(得分:1)

变量仅在当前命令的范围内。

如果要在第一个查询中返回@ttt的值,那么可能在第二个查询中,您可以再次声明该变量,然后将该变量设置为从第一个查询返回的值。

答案 2 :(得分:0)

从第一个命令开始,@ttt中的值将在retVal中。当你已经拥有值时,为什么还需要进行另一个查询?