Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
StreamCX
Member

Откуда:
Сообщений: 43
CREATE PROCEDURE Translate_Orig (@Orig nvarchar(32),@Translated nvarchar(32))
AS
BEGIN
UPDATE Dictionary
IF  EXISTS (SELECT * FROM Dictionary WHERE Dictionary.Orig=@Orig)
SET Dictionary.Translated=@Translated
ELSE INSERT INTO Dictionary VALUES (@Orig, @Translated);
END
GO

SET @Orig = N'Orig'
SET @Translated  = N'traslated' 
EXEC Translate_Orig (@Orig,@Translated);

Жалуется на ошибку Sorry but I can`t exec there Msg 102, Level 15, State 1, Line 1 Incorrect syntax near 'Orig'

Сообщение было отредактировано: 28 май 13, 18:36
28 май 13, 18:34    [14361278]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Ну так прекратите выдумывать синтаксис, и все будет в порядке.

Сообщение было отредактировано: 28 май 13, 18:37
28 май 13, 18:37    [14361292]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
StreamCX
Member

Откуда:
Сообщений: 43
Гавриленко Сергей Алексеевич, А что выдумано? Как правильно сделать то? EXEC не пашет. Все остальное пашет.
28 май 13, 18:38    [14361300]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
Гость333
Member

Откуда:
Сообщений: 3683
StreamCX
EXEC Translate_Orig (@Orig,@Translated);

скобки уберите
28 май 13, 18:42    [14361316]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
StreamCX
Member

Откуда:
Сообщений: 43
Гость333,

А теперь Msg 208, Level 16, State 1, Procedure Translate_Code, Line 5
Invalid object name 'Dictionary'.
28 май 13, 18:50    [14361358]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
StreamCX
Member

Откуда:
Сообщений: 43
CREATE PROCEDURE Translate_Code (@Orig nvarchar,@translated nvarchar)
AS
BEGIN

IF EXISTS (SELECT * FROM Dictionary WHERE Dictionary.Orig=@Orig)
BEGIN
UPDATE Dictionary
SET Dictionary.translated=@translated
END
ELSE INSERT INTO Dictionary VALUES (@Orig, @translated);
END
GO

Наверху неправильно записана, правильно как тут. Но ошибка тут с Dictionary
28 май 13, 19:00    [14361409]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
StreamCX
Наверху неправильно записана, правильно как тут. Но ошибка тут с Dictionary

значит, в текущей базе нет объекта Dictionary
28 май 13, 19:03    [14361418]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
StreamCX
Member

Откуда:
Сообщений: 43
Нет проблемы с Dictionary, это я IDE не так воспользовался.
28 май 13, 19:06    [14361436]     Ответить | Цитировать Сообщить модератору
 Re: Nvarchar Exec SQL SERVER 2012 there Msg 102, Level 15, State 1  [new]
StreamCX
Member

Откуда:
Сообщений: 43
Shakill, Гость333 , Гавриленко Сергей Алексеевич , всем большое спасибо!

Я тут допишу функцию до конца, а то там немножко некорректно она работала не в плане синтаксиса.
CREATE PROCEDURE Translate_Orig (@Orig nvarchar(32),@Translated nvarchar(32))
AS
BEGIN
IF EXISTS (SELECT * FROM Dictionary WHERE Dictionary.Orig=@Orig)
BEGIN
UPDATE Dictionary
SET Dictionary.Translated=@Translated WHERE Dictionary.Orig=@Orig
END
ELSE INSERT INTO Dictionary VALUES (@Orig, @Translated);
END
GO

DECLARE @Orig nvarchar(32);
DECLARE @Translated nvarchar(32);
SET @Orig = N'Name'
SET @Translated = N'Имя'

EXEC Translate_Orig @Orig,@Translated;
28 май 13, 19:30    [14361560]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить