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

Откуда: Киев
Сообщений: 1387
Как правильно сделать

....
	@id bigint,
	@client nvarchar(100) output,
	@code bigint output,
	@result nvarchar(100) output
as
if @id in (select id from Table1 where id=@id)
	begin 
		set @client = (select client as Client from tblClient where id=@id)
		set @result = (select someResult as Rezult from Table1 where id=@id)
	end
else
begin
select * from Table where id=@id
end


то есть если такой id есть то вернуть 2 параметра, в противном случае вернуть данные, ну если есть вариант лучше?

у меня ругается после первого begin "Incorrect syntax near the keyword 'set'."

Спасибо
30 окт 13, 17:45    [15054745]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
Гость333
Member

Откуда:
Сообщений: 3683
VIT2708,

Тот код, который вы показали, синтаксически корректен.
create proc fff
	@id bigint,
	@client nvarchar(100) output,
	@code bigint output,
	@result nvarchar(100) output
as
if @id in (select id from Table1 where id=@id)
	begin 
		set @client = (select client as Client from tblClient where id=@id)
		set @result = (select someResult as Rezult from Table1 where id=@id)
	end
else
begin
select * from Table1 where id=@id
end

Command(s) completed successfully.

(Единственное, в последнем селекте ключевое слово Table заменил на Table1).
30 окт 13, 18:02    [15054867]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
Konst_One
Member

Откуда:
Сообщений: 11621
у ТС наверное function
30 окт 13, 18:03    [15054870]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Konst_One,

Для функции SQL Server ругался бы раньше — например, на то, что список параметров не заключён в скобки, или на то, что output-параметры в функции недопустимы.
30 окт 13, 18:05    [15054881]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
VIT2708
Member [заблокирован]

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

Тот код, который вы показали, синтаксически корректен.
create proc fff
	@id bigint,
	@client nvarchar(100) output,
	@code bigint output,
	@result nvarchar(100) output
as
if @id in (select id from Table1 where id=@id)
	begin 
		set @client = (select client as Client from tblClient where id=@id)
		set @result = (select someResult as Rezult from Table1 where id=@id)
	end
else
begin
select * from Table1 where id=@id
end

Command(s) completed successfully.

(Единственное, в последнем селекте ключевое слово Table заменил на Table1).


у меня ругается именно на строку

begin
set @client = (select client as Client from tblClient where id=@id)

и не могу найти ошибку!!!!!
30 окт 13, 18:10    [15054907]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Konst_One,

нет не функция а простая ХР
30 окт 13, 18:10    [15054913]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
VIT2708,

И какая у Вас версия сервера\уровень совместимости бд?
30 окт 13, 18:13    [15054933]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
Гость333
Member

Откуда:
Сообщений: 3683
VIT2708
у меня ругается именно на строку

begin
set @client = (select client as Client from tblClient where id=@id)

и не могу найти ошибку!!!!!

Вот прямо на выложенный мной скрипт ругается? Проверил сейчас на версиях MSSQL от 2000 до 2012 включительно, везде компилируется без ошибок.
30 окт 13, 18:15    [15054942]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
pkarklin
VIT2708,

И какая у Вас версия сервера\уровень совместимости бд?


2005
30 окт 13, 18:16    [15054948]     Ответить | Цитировать Сообщить модератору
 Re: подскажите по процедуре  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
VIT2708,

ё-моё, скобку закрыть забыл!!!!!!!!

спасибо всем
30 окт 13, 18:38    [15055082]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить