2017-02-23 30 views
0

У меня эти ошибки ниже хранимой процедуры.Хранимая процедура Sql с 1 объявлением, 2 оператором обновления и 1 вставкой

Только одно выражение может быть указано в списке выбора, если подзапрос не представлен с EXISTS. Имя столбца или номер заданных значений не соответствует определению таблицы.

Create PROCEDURE [dbo].[tbl_TeleCom_UpdateTeleComNo] 

    @type varchar(100) , 
    @comNo varchar(100), 
    @status bit 

AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    Declare @b_ComNo varchar(100) 
    Set @b_ComNo = (Select * from tbl_TeleCom where Type = @type) 

    IF @b_ComNo IS NOT NULL 
    BEGIN 
     Insert Into tbl_ComNoHistory 
     Select B_ComNo, B_StartTime, B_EndTime 
     from tbl_TeleCom 
     where Type = @type 
     Group By B_ComNo, B_StartTime, B_EndTime  
    END 

     Update tbl_Balance Set 
     Status = 0 
     from tbl_Balance 
     Join tbl_TeleCom On tbl_TeleCom.CurrentComNo = tbl_Balance.ComNo 
     And tbl_TeleCom.Type = @type 

     Update tbl_TeleCom Set 
     CurrentComNo = @comNo, 
     CurrentTime = GETDATE(), 
     B_ComNo = CurrentComNo, 
     B_StartTime = CurrentTime, 
     B_EndTime = GETDATE() 
     where Type [email protected] 

     Update tbl_Balance Set 
     Status = @status 
     from tbl_Balance 
     Join tbl_TeleCom On tbl_TeleCom.CurrentComNo = tbl_Balance.ComNo 
     And tbl_TeleCom.Type = @type 
END 
+1

и whts вы Проб здесь? – user7417866

+0

У меня эти ошибки. Только одно выражение может быть указано в списке выбора, если подзапрос не вводится с EXISTS. Имя столбца или количество заданных значений не соответствует определению таблицы. – Erebus

+0

Я не могу запустить эту процедуру sql. – Erebus

ответ

0
Create PROCEDURE [dbo].[tbl_TeleCom_UpdateTeleComNo] 

    @type varchar(100) , 
    @comNo varchar(100), 
    @status bit 

AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    Declare @b_ComNo varchar(100) 
    SELECT @b_ComNo = ComNo from tbl_TeleCom where Type = @type 

    IF @b_ComNo IS NOT NULL 
    BEGIN 
     Insert Into tbl_ComNoHistory 
     Select B_ComNo, B_StartTime, B_EndTime 
     from tbl_TeleCom 
     where Type = @type 
     Group By B_ComNo, B_StartTime, B_EndTime  
    END 

     Update tbl_Balance Set 
     Status = 0 
     from tbl_Balance 
     Join tbl_TeleCom On tbl_TeleCom.CurrentComNo = tbl_Balance.ComNo 
     And tbl_TeleCom.Type = @type 

     Update tbl_TeleCom Set 
     CurrentComNo = @comNo, 
     CurrentTime = GETDATE(), 
     B_ComNo = CurrentComNo, 
     B_StartTime = CurrentTime, 
     B_EndTime = GETDATE() 
     where Type [email protected] 

     Update tbl_Balance Set 
     Status = @status 
     from tbl_Balance 
     Join tbl_TeleCom On tbl_TeleCom.CurrentComNo = tbl_Balance.ComNo 
     And tbl_TeleCom.Type = @type 
END