写一个存储过程,要求传入一个表名,返回该表的记录数(假设传入的表在数据库中都存在)

解决方案 »

  1.   

    create proc proc_name
    @tbname varchar(50)
    as
    begin
    exec('select count(*) from '+ @tbname)
    end
      

  2.   

    if exists(select Name from sysobjects where name='prGetCount' and type='P')
      Drop Procedure prGetCount
    go
    create Procedure prGetCount @tbName varchar(50)
      with encryption
    as
    begin
      exec('select count(*) from '+@tbName)
    end
    go
      

  3.   

    --自己写的话可以CREATE PROC dbo.p_rows
    @table_name sysname,
    @rows int OUTPUT
    AS
    SET NOCOUNT ON;
    DECLARE
    @sql nvarchar(4000);
    SET @sql = N'SELECT @rows = COUNT(*) FROM ' + @table_name;
    EXEC sp_executesql @sql, N'@rows int OUTPUT', @rows OUTPUT;
    GO-- 调用
    DECLARE 
    @re int;
    EXEC dbo.p_rows N'表名', @re OUT;
    SELECT @re;
      

  4.   

    select rows from sysindexes where indid in(0,1) and ID=object_id('表名')
      

  5.   

    create proc p1(@TabName sysname)
    as
    select rows from sysindexes where indid in(0,1) and ID=object_id(@TabName)go
      

  6.   

    create procedure sp_count(@tname nvarchar(60))
    as
    begin
        declare @cnt int,@sql nvarchar(200)
        set @sql=N'select @cnt=count(*) from '+tname
        exec @sql,N'@cnt int out',@cnt out    return @cnt
    end
      

  7.   

    ^_^。谢谢大家帮忙啊。都解决了啊。我自己写的有问题啊。也不清楚那错了啊。运行提示那行有错误。但不清楚什么原因啊。
    Create procedure jilushu(@tablename varchar(30),@jicount int(8) out)
    As
    Select * from @tablename
    Select @jicount=@@rowcount
    go
    消息 1087,级别 15,状态 2,过程 jilushu,第 3 行
    必须声明表变量 "@tablename"。
      

  8.   

    Create procedure jilushu(@tablename varchar(30),@jicount int out) 
    As 
    exec('Select * from '+@tablename) 
    Select @jicount=@@rowcount 
    go 
      

  9.   

    1、必须要用exec括起来
    2、int类型不要指定长度
      

  10.   

    不过还要感谢mathsfan。问题解决了啊。下次一定把分给你补上啊。