INSERT INTO T_JOB(JOB_CD, USER_CD, START_DATE, END_DATE, TOPIC, FINISHED_FLAG,PRI_FLAG, OUT_FLAG,CONTENT,CRE_CD,CRE_DATE)
        VALUES(''''+ @strNewCD + ''','''+@USER_CD+''','''+@StartDate+''','''+ @EndDate + ''',''' + @Purpose + ''','''',''1'',''2'','''+@Address +''','''+ @modiUser + ''','''+ cast(getdate() as varchar(30)) +'''')

解决方案 »

  1.   

    奇怪还是有问题啊..
    提示说服务器: 消息 109,级别 15,状态 1,过程 t_getIntoJob,行 35
    INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
    这是怎么回事啊..都是11项..已经对应了.
      

  2.   

    @ssql='INSERT INTO T_JOB(JOB_CD, USER_CD, START_DATE, END_DATE, TOPIC, FINISHED_FLAG,PRI_FLAG, OUT_FLAG,CONTENT,CRE_CD,CRE_DATE)
            VALUES('''+ @strNewCD + ''','''+@USER_CD+''','''+@StartDate+''','''+ @EndDate + ''',''' + @Purpose + ''','''',''1'',''2'','''+@Address +''','''+ @modiUser + ''','''+ cast(getdate() as varchar(30)) +''')'exec(@ssql)
      

  3.   

    除了上面的SQL语句改之外,你的最后一句END和什么对应啊,BEGIN跑哪去了
      

  4.   

    INSERT INTO T_JOB(
    JOB_CD, 
    USER_CD, 
    START_DATE, 
    END_DATE, 
    TOPIC, 
    FINISHED_FLAG,
    PRI_FLAG, 
    OUT_FLAG,
    CONTENT,
    CRE_CD,
    CRE_DATE)
            VALUES(
    ''''+ @strNewCD + ''',
    '''+@USER_CD+''',
    '''+@StartDate+''',
    '''+ @EndDate + ''',
    ''' + @Purpose + ''',
    '''',
    '''+'1'+''',
    '''+'2'+''',
    '''+@Address +''',
    '''+ @modiUser + ''',
    '''+ cast(getdate() as varchar(30)) +'''')
      

  5.   

    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[t_getIntoJob]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    drop procedure [dbo].[t_getIntoJob]
    GOSET QUOTED_IDENTIFIER ON 
    GO
    SET ANSI_NULLS ON 
    GOcreate procedure t_getIntoJob
           @User_cd varchar(50), 
           @StartDate varchar(50),
           @StartDateFlag int,
           @EndDateFlag int,
           @EndDate varchar(50),
           @Purpose varchar(50),
           @ModiUser varchar(50),
           @Address varchar(100)
    as 
       declare @ssql varchar(500)
       declare @job_cd varchar(10)
       declare @job_cd_len varchar(10)
       declare @intLen int
       declare @updateflag varchar(10)
       declare @intJobNewCD int
       declare @strNewCd varchar(10)
       declare @intdays int
       begin     set @intdays=datediff(dd,@StartDate,@EndDate)
          set @intdays=2
         while @intdays>0
           begin
    set @job_cd_len='0000000000'
    select @job_cd=job_cd from t_job_cd

    set @updateflag=isnull(@job_cd,'null')

    set @job_cd=isnull(@job_cd,@job_cd_len)
    /*获得新CD的字符长度*/
            print @job_cd
    set @intJobNewCD=cast(@job_cd as int)+1
    set @intLen=len(@intJobNewCD)
    set @strNewCd=cast(@intJobNewCD as varchar(10))
    set @strNewCD=stuff(@job_cd_len,10-@intLen+1,10,@strNewCd) 
    if @updateflag='null'
       insert into t_job_cd values(@strnewcd)
    else
       update t_job_cd  set job_cd=@strNewCD       set @ssql='INSERT INTO T_JOB(JOB_CD, USER_CD, START_DATE, END_DATE, TOPIC, FINISHED_FLAG,PRI_FLAG, OUT_FLAG,CONTENT,CRE_CD,CRE_DATE) VALUES('''+ @strNewCD + ''','''+@User_cd+''','''+@StartDate+''','''+ @EndDate + ''',''' + @Purpose + ''','''',''1'',''2'','''+@Address +''','''+ @modiUser + ''','''')'       exec @ssql
           set  @intdays=@intdays-1
          end     
      end
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO我改成这样..
    然后运行.exec t_getIntoJob '','2005-12-02','','2005-12-04','','','',''
    为什么总说我服务器: 消息 8114,级别 16,状态 4,过程 t_getIntoJob,行 0
    将数据类型 varchar 转换为 int 时出错。
      

  6.   

    if @updateflag='null'
    修改为:if @updateflag is null