CREATE PROCEDURE dbo.TestPro
   @sName varchar(20),
   @slike varchar(20),
   @nCount int output
   AS
BEGIN
--DECLARE @vSql VARCHAR(8000)
DECLARE @vSql NVARCHAR(4000)--SELECT @nCount = -1
--SELECT @vSql = ''
SET @vSql = 'SELECT @nCount = Count(*) FROM TTable WHERE Name = '+ '''' 
+@sName +''''+' AND theLike like ' + '''' + '%' + @sLike + '%' + ''''
print @vSql
EXEC sp_executesql @vSql,N'@nCount Int out',@nCount out
--EXEC(@vSql)RETURN;
END

解决方案 »

  1.   

    加上注释CREATE PROCEDURE dbo.TestPro
       @sName varchar(20),
       @slike varchar(20),
       @nCount int output --去掉,号
       AS
    BEGIN
    --DECLARE @vSql VARCHAR(8000) --改为NVARCHAR
    DECLARE @vSql NVARCHAR(4000)--SELECT @nCount = -1 --可以去掉
    --SELECT @vSql = '' --可以去掉
    SET @vSql = 'SELECT @nCount = Count(*) FROM TTable WHERE Name = '+ '''' 
    +@sName +''''+' AND theLike like ' + '''' + '%' + @sLike + '%' + ''''
    print @vSql
    EXEC sp_executesql @vSql,N'@nCount Int out',@nCount out --改用sp_executesql
    --EXEC(@vSql)RETURN;
    END
      

  2.   

    CREATE PROCEDURE dbo.TestPro
       @sName varchar(20),
       @slike varchar(20),
       ASDECLARE @vSql VARCHAR(8000), @nCount intSELECT @nCount = -1
    SELECT @vSql = ''BEGINSET @vSql = 'SELECT @nCount = Count(*) FROM TTable WHERE Name = '+ '''' 
    +@sName +''''+' AND theLike like ' + '''' + '%' + @sLike + '%' + ''''print @vSql
     
    EXEC(@vSql)RETURN;
    END
      

  3.   

    不是少一个输出参数的问题,楼主写这个存储过程就是为了得到@nCount 的值,三楼直接将这个去掉了。