Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 помогите плиз  [new]
Александр Пеклов
Member

Откуда:
Сообщений: 5
Подчеркивает then else и end if; Воооот, спасите меня пожалуйста, добрые люди

CREATE PROCEDURE insert_into_service
 @manuf_name VARCHAR(60),
 @med_id INT
AS

begin
    declare @oId int
    declare @sId int   

if not exists
(select * from manufacturer 
	where manufacturer.name_manufacturer = @manuf_name)
    
then 

select @oId =  max(dbo.manufacturer.id_manufacturer) + 1
	from dbo.manufacturer;

insert into dbo.manufacturer
	values ( @oId,@manuf_name) 
		
else

select @oId =  dbo.manufacturer.id_manufacturer
	from dbo.manufacturer
    where dbo.manufacturer.name_manufacturer = @manuf_name;
    
end if;


select @sId =  max(dbo.manuf_medicament.id_man_med) + 1
	from dbo.manuf_medicament

insert into dbo.manuf_medicament 
	values(@sId,@med_id,@oId)
	
    select *
	from manuf_medicament;
	
END


Сообщение было отредактировано: 1 сен 18, 20:36
1 сен 18, 20:33    [21661356]     Ответить | Цитировать Сообщить модератору
 Re: Помогите плиз!!  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
Ну так правильно, нет в MSSQL никаких "end if"
1 сен 18, 20:34    [21661357]     Ответить | Цитировать Сообщить модератору
 Re: помогите плиз  [new]
Александр Пеклов
Member

Откуда:
Сообщений: 5
да ладнооо, вот чёрт. А есть идеи как исправить?
1 сен 18, 20:37    [21661360]     Ответить | Цитировать Сообщить модератору
 Re: помогите плиз  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
Александр Пеклов
да ладнооо, вот чёрт. А есть идеи как исправить?
Открыть справку, изучить синтаксис и исправить.
1 сен 18, 20:45    [21661362]     Ответить | Цитировать Сообщить модератору
 Re: помогите плиз  [new]
iap
Member

Откуда: Москва
Сообщений: 46953
И после then не хватает begin, а перед else - end.
Потому что у вас внутри then несколько инструкций.
1 сен 18, 20:56    [21661368]     Ответить | Цитировать Сообщить модератору
 Re: помогите плиз  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
create procedure insert_into_service
    @manuf_name varchar(60)
  , @med_id int
as
begin
    declare @oId int;
    declare @sId int;

    if not exists ( select *
					from manufacturer
					where manufacturer.name_manufacturer = @manuf_name )
    begin

        select @oId = max(dbo.manufacturer.id_manufacturer) + 1
        from dbo.manufacturer;

        insert into dbo.manufacturer
        values ( @oId, @manuf_name );

    end else begin

        select @oId = dbo.manufacturer.id_manufacturer
        from dbo.manufacturer
        where dbo.manufacturer.name_manufacturer = @manuf_name;

    end;

    select @sId = max(dbo.manuf_medicament.id_man_med) + 1
    from dbo.manuf_medicament;

    insert into dbo.manuf_medicament
    values ( @sId, @med_id, @oId );

    select *
    from manuf_medicament;
end;
2 сен 18, 19:28    [21661878]     Ответить | Цитировать Сообщить модератору
 Re: помогите плиз  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
ой вей, Сима, ви-таки решились прострелить себе колено...

для размышлений
DECLARE @tab TABLE ( [id] INT IDENTITY(1,1), [name] NVARCHAR(255) COLLATE Cyrillic_General_CI_AI, [time] DATETIME2(3) DEFAULT SYSDATETIME()  )
DECLARE @id INT
DECLARE @id_tab TABLE ( [id] INT, [action] VARCHAR(1), [time] DATETIME2(3) )
;
INSERT
INTO
  @tab (
    [name] )
OUTPUT
  inserted.[id],
  'I',
  SYSDATETIME()
  INTO @id_tab
VALUES 
  ( 'ООО Рога и копыта' ),
  ( 'ООО Праздник-праздник-праздник' )
;
SET @id = SCOPE_IDENTITY()
SELECT @id
;
MERGE
INTO
  @tab t
USING (
  SELECT [name] = 'ООО Рога и копыта'
  UNION ALL
  SELECT [name] = 'ПАО Пупкин и Ко'
) s
ON (
      s.[name] = t.[name] )
WHEN MATCHED THEN
  UPDATE SET
    t.[time] = SYSDATETIME()
WHEN NOT MATCHED BY TARGET THEN
  INSERT (
    [name] )
  VALUES (
    s.[name] )
WHEN NOT MATCHED BY SOURCE THEN
  DELETE
OUTPUT
  ISNULL( inserted.[id], deleted.[id] ),
  LEFT( $action, 1 ),
  SYSDATETIME()
  INTO @id_tab
;
SET @id = SCOPE_IDENTITY()
SELECT @id
;
SELECT
  *
FROM
  @tab
;
SELECT
  *
FROM
  @id_tab
;
3 сен 18, 10:50    [21662378]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить