2016-04-29 88 views
0

我的存储过程的代码:子查询返回了超过1个值。这当子查询跟随不允许=,=,<, <= , >,> =

DECLARE @Form NVARCHAR(36) 
SET @Form = NEWID() 

SELECT * 
INTO #s 
FROM [2290_Form] 
WHERE PK_2290F_key = @inputkey 

INSERT INTO [2290_Form] 
VALUES (@Form, 
    (SELECT #s.FK_C_B_key FROM #s), 
    (SELECT #s.is_vin_correction FROM #s), 
    (SELECT #s.is_amendment FROM #s), 
    (SELECT #s.amendment_category FROM #s), 
    (SELECT #s.is_final_return FROM #s), 
    (SELECT #s.first_used_month FROM #s), 
    (SELECT #s.tax_year FROM #s), 
    (SELECT #s.tax_amt FROM #s), 
    (SELECT #s.additional_amt FROM #s), 
    (SELECT #s.credit_amt FROM #s), 
    (SELECT #s.payment_mode FROM #s), 
    (SELECT #s.consent_tag FROM #s), 
    (SELECT #s.status FROM #s), GETDATE(), NULL) 

INSERT INTO [2290_Vehicles] 
VALUES (NEWID(), @Form, 
    (SELECT vin FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT category FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT is_logging FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT is_agricultural FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT is_mileage_exceed FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT weight_current FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT weight_old FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT credit_reason FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT buyer FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT effective_date FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), 
    (SELECT tax_amt FROM [2290_Vehicles] WHERE FK_2290_F_key = @inputkey), GETDATE(), NULL) 

SET @Formkey = @Form 

我得到的错误是:

子查询返回多个值。当 子查询遵循=,!=,<,< =,>,> =或当子查询用作 表达式时,这是不允许的。

+4

您的子查询返回的行太多。因此,错误消息 –

+0

插入后的所有选择可能容易出错 – TheGameiswar

+0

当您的查询返回多个行时,在将此类型的错误设置为变量时发生此类错误。 –

回答

0
DECLARE @Form NVARCHAR(36) 
SET @Form = NEWID() 

INSERT INTO dbo.[2290_Form] 
SELECT @Form, FK_C_B_key, is_vin_correction, ..., GETDATE(), NULL 
FROM dbo.[2290_Form] 
WHERE PK_2290F_key = @inputkey 

INSERT INTO dbo.[2290_Vehicles] 
SELECT NEWID(), @Form, vin, category, ..., tax_amt, GETDATE(), NULL 
FROM dbo.[2290_Vehicles] 
WHERE FK_2290_F_key = @inputkey 
0

你的一个子查询2290_Vehicles返回多行多。要找到可能的结果,请尝试以下操作:

select FK_2290_F_key 
from [2290_Vehicles] 
group by FK_2290_F_key 
having count(FK_2290_F_key) > 1 
相关问题