改成这样试试:sql server中没有case - when语句,只有case - when表达式,两个是不一样的。修改了一下,用if-else实现
CREATE PROC addtimetable(@number INT) AS
DECLARE @i INT;
SET @i=0;WHILE @i<@number
BEGIN
   if CAST(CEILING(RAND(CHECKSUM(NEWID()))*10) AS INT)%2=0     
         INSERT INTO timetable VALUES ('1', '2', '3', '4', '5', '6')
   ELSE  
         INSERT INTO timetable VALUES ('1', '2', '3', '7', '8', '9')   SET @i=@i+1
END

解决方案 »

  1.   

    如果要用case when实现的话,要用拼接SQL的方式
      

  2.   

    1、Case When 一般用于赋值语句;
    2、End Case 也有语法问题;eg.CREATE PROC addtimetable(@number INT) AS
    DECLARE @i INT;
    DECLARE @sql varchar(2000)
    set @sql=''
    SET @i=0;
    WHILE @i<@number
    BEGIN
      set @sql=
       CASE 
       WHEN  CAST(CEILING(RAND(CHECKSUM(NEWID()))*10) AS INT)%2=0   
       THEN   
             'INSERT INTO timetable VALUES (''1'', ''2'', ''3'', ''4'', ''5'', ''6'')'
       ELSE  
             'INSERT INTO timetable VALUES (''1'', ''2'', ''3'', ''7'', ''8'', ''9'')'
       END --CASE
       exec(@sql)
    SET @i=@i+1
    END