跪求SQL牛人拯救。熬了一夜了,没找到原因

zhangliang6702 2014-09-20 05:44:47
USE [xlmis]
GO
/****** Object: StoredProcedure [dbo].[Pb_SendBillToInvoice] Script Date: 09/20/2014 05:06:26 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Pb_SendBillToInvoice] @BillClient int,@IDString nvarchar(1000)='',@UserID int,@UserName nvarchar(50)
as
declare @sql nvarchar(max)='',@invoiceid int
--处理数据源
select item_id itemid,* into #Temp from Tb_BillItem where 1=0
alter table #Temp drop column item_id
select @sql= N'insert into #Temp select * from xlmis.dbo.Tb_BillItem where item_id in ('+@IDString+')'
exec sp_executesql @sql
alter table #Temp add invoice_id int

--插入主表
insert into XLData.dbo.htxx_invoice_input(client_id,customer_name,invoice_flag,extract_flag,freight_charge,batch_code,creator_id,creator_name)
select @BillClient,customer_name,(case when (select invoice_money from #Temp)>0 then 0 else 4 end),(select top 1 machine_number from #Temp),isnull((select SUM(freight_cost) from #Temp),0),(select top 1 batch_code from #Temp),@UserID,@UserName from Tb_ClientInfo where client_id=@BillClient
select @invoiceid=IDENT_CURRENT('XLData.dbo.htxx_invoice_input')
--更新从表数据源
update #Temp set invoice_id=@invoiceid

--插入从表
insert into XLData.dbo.htxx_invoice_input_item(item_id,invoice_id,[type_id],[type_name],item_name,item_price,tax_rate,tax_money,item_amount,item_money,free_amount,item_stand)
select itemid,invoice_id,[type_id],[type_name],product_type,invoice_price,tax_rate,tax_money,invoice_amount,invoice_money,free_amount,product_model from #Temp

select @sql= N'update Tb_BillItem set invoice_status=1 where item_id in ('+@IDString+')'
exec sp_executesql @sql

truncate table #Temp
drop table #Temp


搞不懂什么原因,之前还可以的。
...全文
233 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
秋的红果实 2014-09-20
  • 打赏
  • 举报
回复
内容太多了,没时间看,帮顶
Null_Reference 2014-09-20
  • 打赏
  • 举报
回复
返回的值不止一个。。可以用in嘛,或者把返回的结果改成只有一个返回结果。
threenewbee 2014-09-20
  • 打赏
  • 举报
回复
select max(invoice_money) from #Temp)>0
wangnaisheng 2014-09-20
  • 打赏
  • 举报
回复
应该是你插入主表那的问题 就是select invoice_money from #Temp 可能返回不是一个值,所以比较不了大小, 你可以先加一个top 1 试试,select top 1 invoice_money from #Temp
smthgdin_020 2014-09-20
  • 打赏
  • 举报
回复
你不能拿1个值和一堆值去比较。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧