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)) +'''')
提示说服务器: 消息 109,级别 15,状态 1,过程 t_getIntoJob,行 35
INSERT 语句中列的数目大于 VALUES 子句中指定的值的数目。VALUES 子句中值的数目必须与 INSERT 语句中指定的列的数目匹配。
这是怎么回事啊..都是11项..已经对应了.
VALUES('''+ @strNewCD + ''','''+@USER_CD+''','''+@StartDate+''','''+ @EndDate + ''',''' + @Purpose + ''','''',''1'',''2'','''+@Address +''','''+ @modiUser + ''','''+ cast(getdate() as varchar(30)) +''')'exec(@ssql)
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)) +'''')
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 时出错。
修改为:if @updateflag is null