Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите плиз / 7 сообщений из 7, страница 1 из 1
01.09.2018, 20:33
    #39696702
помогите плиз
Подчеркивает then else и end if; Воооот, спасите меня пожалуйста, добрые люди

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
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
...
Рейтинг: 0 / 0
01.09.2018, 20:34
    #39696703
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите плиз
Ну так правильно, нет в MSSQL никаких "end if"
...
Рейтинг: 0 / 0
01.09.2018, 20:37
    #39696704
помогите плиз
да ладнооо, вот чёрт. А есть идеи как исправить?
...
Рейтинг: 0 / 0
01.09.2018, 20:45
    #39696705
Гавриленко Сергей Алексеевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите плиз
Александр Пекловда ладнооо, вот чёрт. А есть идеи как исправить?Открыть справку, изучить синтаксис и исправить.
...
Рейтинг: 0 / 0
01.09.2018, 20:56
    #39696708
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите плиз
И после then не хватает begin, а перед else - end.
Потому что у вас внутри then несколько инструкций.
...
Рейтинг: 0 / 0
02.09.2018, 19:28
    #39696890
Владимир Затуливетер
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите плиз
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
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;
...
Рейтинг: 0 / 0
03.09.2018, 10:50
    #39697057
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
помогите плиз
ой вей, Сима, ви-таки решились прострелить себе колено...

для размышлений
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
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
;
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / помогите плиз / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]