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

Откуда: Киев
Сообщений: 1387
Подскажите можна ли так сделать, если нет то как лучше

Есть хранимая процедура с двумя параметрами

CREATE PROCEDURE dbo.Test
	@id nvarchar(20)= null,
	@phone nvarchar(15)= null
as
declare @param nvarchar(20) output
begin
if (@шв in (select id from dbo.Test where id=@id))
	begin
		select top(1) * from dbo.Test
		  where id=@id
return @param = 'текст';
else
.....


Мне нужно вернуть параметр который я не передаю ХП то есть тот который @param если такое возможно

Спасибо.
19 июл 13, 10:36    [14587976]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
super-code
Member

Откуда:
Сообщений: 244
VIT2708,
Не очень ясно, что ты хочешь.
Почитай про output параметры, возможно это оно.
19 июл 13, 10:38    [14587988]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
Гость333
Member

Откуда:
Сообщений: 3683
VIT2708
Мне нужно вернуть параметр который я не передаю ХП то есть тот который @param если такое возможно

Собственно, в заголовке темы и содержится ответ на ваш вопрос. Используйте output-параметр.
CREATE PROCEDURE dbo.Test
	@id nvarchar(20)= null,
	@phone nvarchar(15)= null,
	@param nvarchar(20) output
begin
if (@шв in (select id from dbo.Test where id=@id))
	begin
		select top(1) * from dbo.Test
		  where id=@id
		set @param = 'текст';
		return;
	end
else
.....
19 июл 13, 10:39    [14587996]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Предвижу следующий вопрос — "почему output-параметр не работает (переменная не получает новое значение?" Потому что при вызове процедуры для таких параметров тоже нужно указывать ключевое слово output:
EXEC dbo.Test
	@id = @id,
	@phone = @phone,
	@param = @param output
19 июл 13, 10:41    [14588009]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
VIT2708
Member [заблокирован]

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

я хочу вернуть в программу параметр который я не передавал ХП

то есть

в эти 2 параметра я передаю значение
@id nvarchar(20)= null,
@phone nvarchar(15)= null


а вот этот параметр мне нужно вернуть в мою программу присвоив ему значение
declare @param nvarchar(20) output

например
if (@id in (select id from dbo.Test where id=@id)) 
return @param = 'текст';
else
return @param = 'что то еще';



А про output параметры в инете полно информации но но это немножко не то
19 июл 13, 10:43    [14588027]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
VIT2708,

RETURN в процедуре возвращает целое число. И это придумано для кода возврата.
Нормальный способ для вас - параметр output, о чём уже сказали.
Можно вернуть датасет SELECTом.
19 июл 13, 10:51    [14588089]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
Гость333
Member

Откуда:
Сообщений: 3683
VIT2708
А про output параметры в инете полно информации но но это немножко не то

Объясните, почему "не то"? Выглядит именно как то, что вам нужно.
19 июл 13, 10:59    [14588152]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
iap
Member

Откуда: Москва
Сообщений: 47050
Вот это:
if (@id in (select id from dbo.Test where id=@id))
- уродец какой-то.
Почему не
if exists(select * from dbo.Test where id=@id)
??
19 июл 13, 11:14    [14588283]     Ответить | Цитировать Сообщить модератору
 Re: Output параметр  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
VIT2708
А про output параметры в инете полно информации но но это немножко не то
У вас процедура, а не функция.
19 июл 13, 20:09    [14591785]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить