SQL Server 2005中能否使用raiserror或者print方法,能使用的话为什么在2005的查询分析器中下面程序会出错?
IF EXISTS (SELECT     1
                        FROM         sysobjects
                        WHERE     parent_obj = object_id('tb') AND xtype = 'PK') BEGIN RAISERROR ('表中已经有主键,列只能做为普通列添加') 
ALTER TABLE tb ADD pid int DEFAULT (0) END ELSE BEGIN RAISERROR ('表中无主键,添加主键列') ALTER TABLE tb ADD pid int PRIMARY KEY DEFAULT (0) 
END

解决方案 »

  1.   

    你的raiserror(),用错了
    RAISERROR ('表中已经有主键,列只能做为普通列添加',16,0)
      

  2.   

    IF EXISTS (SELECT    1 
                            FROM        sysobjects 
                            WHERE    parent_obj = object_id('tb') AND xtype = 'PK') 
    BEGIN 
    RAISERROR ('表中已经有主键,列只能做为普通列添加',16,1) 
    ALTER TABLE tb ADD pid int DEFAULT (0) END 
    ELSE
    BEGIN 
    RAISERROR ('表中无主键,添加主键列',16,1) 
    ALTER TABLE tb ADD pid int PRIMARY KEY DEFAULT (0) 
    END
      

  3.   

    要把raiserror改为print还会不会出错了呢?
      

  4.   

    IF EXISTS (SELECT    1 
                            FROM        sysobjects 
                            WHERE    parent_obj = object_id('tb') AND xtype = 'PK') BEGIN print '表中已经有主键,列只能做为普通列添加' 
    ALTER TABLE Test_User_Info ADD xid int DEFAULT (0) END ELSE BEGIN print '表中无主键,添加主键列' ALTER TABLE Test_User_Info ADD xid int PRIMARY KEY DEFAULT (0) 
    END
    这样有没有错误呢?