Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
super-code Member Откуда: Сообщений: 244 |
VIT2708, Не очень ясно, что ты хочешь. Почитай про output параметры, возможно это оно. |
19 июл 13, 10:38 [14587988] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Собственно, в заголовке темы и содержится ответ на ваш вопрос. Используйте 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] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Предвижу следующий вопрос — "почему output-параметр не работает (переменная не получает новое значение?" Потому что при вызове процедуры для таких параметров тоже нужно указывать ключевое слово output:EXEC dbo.Test @id = @id, @phone = @phone, @param = @param output |
19 июл 13, 10:41 [14588009] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47050 |
VIT2708, RETURN в процедуре возвращает целое число. И это придумано для кода возврата. Нормальный способ для вас - параметр output, о чём уже сказали. Можно вернуть датасет SELECTом. |
19 июл 13, 10:51 [14588089] Ответить | Цитировать Сообщить модератору |
Гость333 Member Откуда: Сообщений: 3683 |
Объясните, почему "не то"? Выглядит именно как то, что вам нужно. |
||
19 июл 13, 10:59 [14588152] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
|
||
19 июл 13, 20:09 [14591785] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |