我建了个存储过程:
ALTER procedure tbc_CopyBookBusToBookOrder
@Ids int
as
insert into tbc_BookOrder(OrderTime,Price,BookNumber,UserId,BookId)
select OrderTime=getdate(),(select price from tbb_Book where tbb_Book.id=tbc_BookBus.bookid) as Price,BookNumber,UserId,BookId
from tbc_BookBus
where id in (@Ids)
执行:exec tbc_CopyBookBusToBookOrder @Ids='66'
可以成功!但执行
exec tbc_CopyBookBusToBookOrder @Ids='66,70'就出错:将数据类型 varchar 转换为 int 时出错。
高手来看啊
ALTER procedure tbc_CopyBookBusToBookOrder
@Ids int
as
insert into tbc_BookOrder(OrderTime,Price,BookNumber,UserId,BookId)
select OrderTime=getdate(),(select price from tbb_Book where tbb_Book.id=tbc_BookBus.bookid) as Price,BookNumber,UserId,BookId
from tbc_BookBus
where id in (@Ids)
执行:exec tbc_CopyBookBusToBookOrder @Ids='66'
可以成功!但执行
exec tbc_CopyBookBusToBookOrder @Ids='66,70'就出错:将数据类型 varchar 转换为 int 时出错。
高手来看啊
你的存储过程中定义了 @Ids 是 int类型
当你代入 '66'时,sql server 把它转换成int类型进行执行
而代入 '66,70' 时,sql server 无法转换,所以,出错