存储过程插入数据时,对象类型不兼容?

来源:百度知道 编辑:UC知道 时间:2024/06/07 03:35:06
这个是简单的存储

ALTER PROCEDURE A
AS

declare

@OldShijian datetime,
@NewShijian datetime,
@shuzi int

set @OldShijian='SELECT DATEADD(mm,DATEDIFF(mm,0,getdate())-1,27)'
set @NewShijian=getdate()
select @shuzi=count(*) from AZ_Info where DateFrom between @OldShijian and @NewShijian

insert into A(人数) values(@shuzi)
go

下面是报错误
服务器: 消息 2010,级别 16,状态 1,过程 A,行 14
无法在 A 上执行更改操作,因为其对象类型不兼容。
ALTER PROCEDURE A
AS

declare

@OldShijian1 char,
@OldShijian datetime,
@NewShijian datetime,
@shuzi int

set @OldShijian1='SELECT DATEADD(mm,DATEDIFF(mm,0,getdate())-1,27)'
set @OldShijian=CONVERT (datetime,@OldShijian1, 21)
set @NewShijian=getdate()
select @shuzi=count(*) from AZ_Info where DateFrom between @OldShijian and @NewShijian

insert into A(人数) values(@shuzi)
go 这样还是不行

存储过程创建是create吧

..............................................................................................................................
@OldShijian datetime貌似是时间类型 你下面是却是字符串,还是SQL语句的字符串。。。。。

如果你确定"人数"是int型,那么错误就不出在Insert上
select @shuzi=count(*) from AZ_Info where DateFrom between @OldShijian and @NewShijian
就你这句就不能过
应该是这样吧:
set @shuizi = (select count(*) from AZ_Info where DateFrom between @OldShijian and @NewShijian )

先把这个改了,如果还不行就在查询分析器里一行一行删,看哪里运行不过。