我现在在一个类中写了一方法,功能是查询数据表中有没有这条记录的存在(这个类我想以后还会在别的表中用到,所以表名和字段名都当变量传进去)类中的方法是:
public string ChkID(string tableName,string IDName, int  recID)
        {
            DataBase DB = new DataBase();
            SqlParameter[] prams ={
                DB.MakeInParam("@tableName",SqlDbType.VarChar,20,tableName),
                DB.MakeInParam("@recID",SqlDbType.VarChar,5,recID),
                DB.MakeInParam("@IDName",SqlDbType.VarChar,8,IDName),
                DB.MakeOutParam("@backinfo", SqlDbType.Int, 4)
            };
            try
            {
                DB.RunProc("sp_chkID", prams);
                string backinfo = Convert.ToString(prams[3].Value);
                // 如果backinfo为空,则添加失败
                if (backinfo == string.Empty)
                    return null;
                else
                    return backinfo;
            }
            catch(Exception ex)
            {
                ex.Message.ToString();
                return null ;
            }
        } 储存过程如下:CREATE PROCEDURE dbo.sp_chkID
(
@tableName varchar(20),
@IDName varchar(8),
@recID varchar(5),
@backinfo int output
) AS
exec('select '+@backinfo+'=count(*) from '+@tableName+' where '+@IDName+'='+@recID)
print('select '+@backinfo+'=count(*) from '+@tableName+' where '+@IDName+'='+@recID)
GO上面的储存过程在查询分析器里是能运行的.
但一到程序中就出现了以下错误:
第一行"="附近有错误
--------------------------------------------------------------------------
以上方法可能不好,不知道哪位高手能有好的方法!!~

解决方案 »

  1.   

    exec('select '+@backinfo+'=count(*) from '+@tableName+' where '+@IDName+'='+@recID)---------------------------------------是不是“=”前面要加空格呢EX. select name空格= .....
      

  2.   

    @backinfo这个参数你没有赋值
    整个语句组合后就是
    select =count(*) from tableName where IDName = recID建议:参考sql server的帮助
      

  3.   

    @backinfo这个参数你没有赋值
    整个语句组合后就是
    select =count(*) from tableName where IDName = recID@backinfo是一个返回值的呀?
    我用查询分析器打印出来是这样的
    select @backinfo=count(*) from tableName where IDName = recID