2

我正在尝试使用 c# 中的所有 sql 函数。我已经将参数作为@fileid 和useid 添加到函数中。但是得到一个错误。我无法弄清楚我的代码中的错误..

string query = "exec fn_sh_HitInfo(@fileid,@UserID)";
        SqlCommand cmd = new SqlCommand();
        cmd.CommandText = query;
        cmd.CommandType = CommandType.Text;
        cmd.Parameters.Add("@fileid", SqlDbType.BigInt).Value=fid;
        cmd.Parameters.Add("@UserID", SqlDbType.BigInt).Value =UserID;
        string taglist = string.Empty;


        try
        {
            taglist = DBAction.ExecuteQuery(cmd, FilteringControl.ProjectID).ToString();
        }
4

3 回答 3

4

不要使用括号

exec fn_sh_GetTagListHitInfo @fileid,@UserID 

或者,如果这是一个标量 UDF,您可以替代地使用SELECTEXEC在这种情况下需要架构名称)

SELECT dbo.fn_sh_GetTagListHitInfo (@fileid,@UserID )
于 2013-05-16T12:20:29.980 回答
2

您不需要该exec部分,也不需要知道正确的语法。

    //string query = "exec fn_sh_GetTagListHitInfo(@fileid,@UserID)";

    SqlCommand cmd = new SqlCommand();     
    cmd.CommandType = CommandType.StoredProcedure;      // just mark it as an SP
    cmd.CommandText = "fn_sh_GetTagListHitInfo";        // only the name
    cmd.Parameters.Add("@fileid", SqlDbType.BigInt).Value=fid;
    cmd.Parameters.Add("@UserID", SqlDbType.BigInt).Value = FilteringControl.UserID;
于 2013-05-16T12:28:56.200 回答
2

更改 cmd.CommandText 值并尝试。

cmd.CommandText = "select fn_sh_GetTagListHitInfo(@fileid,@UserID)";
于 2013-05-16T13:05:15.787 回答