我用sqlserver2005,想要用存储过程重建表user的索引,返回值为索引是否成功

解决方案 »

  1.   

    Use [数据库名称]
    Go 
    DECLARE @DBCCString NVARCHAR(1000)
    DECLARE @TableName VARCHAR(100)
    DECLARE Cur_Index CURSOR
    FOR
      SELECT Name AS TblName
      FROM sysobjects 
      WHERE xType='U'
      ORDER BY TblName
    FOR READ ONLY
    OPEN Cur_Index
    FETCH NEXT FROM Cur_Index
    INTO @TableName
    WHILE @@FETCH_STATUS=0
    BEGIN
       SET @DBCCString = 'DBCC DBREINDEX(@TblName,'''')WITH NO_INFOMSGS'
       EXEC SP_EXECUTESQL  @DBCCString,N'@TblName VARCHAR(100)', @TableName
       PRINT '重建表' + @TableName +'的索引........OK!'
     FETCH NEXT FROM Cur_Index INTO @TableName
    END
    CLOSE Cur_Index
    DEALLOCATE Cur_Index
    PRINT '操作完成!'
    go 
      

  2.   

    BEGIN TRY 
    ALTER INDEX ALL ON tb REBUILD;
    SELECT '成功'
    END TRY 
    BEGIN CATCH
    SELECT
        ERROR_NUMBER() AS ErrorNumber
        ,ERROR_SEVERITY() AS ErrorSeverity
        ,ERROR_STATE() AS ErrorState
        ,ERROR_PROCEDURE() AS ErrorProcedure
        ,ERROR_LINE() AS ErrorLine
        ,ERROR_MESSAGE() AS ErrorMessage;END CATCH 
      

  3.   


    IF OBJECT_ID('pp') IS NOT NULL DROP PROC pp
    GO 
    CREATE PROC pp
    @name VARCHAR(128)--table name
    AS
    BEGIN 
    BEGIN TRY 
    EXEC('ALTER INDEX ALL ON '+@name+' REBUILD')
    RETURN 1
    END TRY 
    BEGIN CATCH
    RETURN 0
    END CATCH 
    END --调用
    DECLARE @i INT 
    EXEC @i=pp 'tb'
    SELECT @i