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

Откуда: Ростов- на- Дону
Сообщений: 564
Ребята, подскажите только без издевки нигде не нашел ответа

Мне нужно вернуть измененное значение входного параметра функции
Можно ли это сделать? Например @ret

"Реклама в сфере услугdСервисная деятельностьdЭкономика и управление сферы услуг"
перед d упр. символ US=char(31)
Дисциплина находится верно.

ALTER FUNCTION [dbo].[GetDis] (@val varchar(5000), @ret as varchar(500))
RETURNS varchar(200)

AS
BEGIN
     DECLARE  
       @i     integer,
       @len   integer,
       @end   integer,
       @start integer,
       @dis   varchar(1000);
                  
 set @start = charindex(char(31)+'d', @val);
   
 if @start > 0 begin  
   set @dis = substring(@val, 1, @start-1) 
   set @val = substring(@val,@start+2,len(@val)-@start-1) 
   set @ret = @val
 end   
 else begin 
   set @dis = substring(@val, 1, len(@val)-2);
   set @val  = '' 
   set @ret = ''    
 end   
 
 return @dis;
 
END;
3 фев 15, 14:50    [17212215]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
topdon
Можно ли это сделать?

Можно. Меняйте.
3 фев 15, 14:52    [17212230]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
тока у вас результат 200 символов ,а вы туда пытатесь запихнуть 1000
Тока непонятно где вы не нашли примера то ?
3 фев 15, 14:55    [17212255]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
set @val = substring(@s, @startdata+@start+5,@len-3);
print '900 ='+'"'+ @Val+'"';
[b]set @ret = libra1.dbo.getdis(@val, @r);[/b]
...
print 'Дисциплина "'+@ret+'"';
Print 'Остаток строки ="'+ @r+'"';


Получаю

900 ="Ресторанное обслуживаниеdИнновационный менеджмент в сервисеdИнтернет-сервисdМаркетинг в сфере услугdМенеджмент в социально-культурном сервисе и туризмеdРеклама в сфере услугdСервисная деятельностьdЭкономика и управление сферы услуг"
Дисциплина "Ресторанное обслуживание"

Остатка нет, т.е. он пустой. Два дня бьюсь. Стыдно конечно.
3 фев 15, 15:17    [17212475]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
topdon
Два дня бьюсь

Вы не знаете, что такое отладка ?
Не в состоянии узнать, какие значения получаются в переменных по ходу выполнения ?
3 фев 15, 15:19    [17212505]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
Отладчик Transact SQL не поддерживает SQL Server 2005 и более ранние версии.

Если я из функции вырезаю код и вставляю в скрипт, то все работает.
3 фев 15, 15:26    [17212588]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
topdon
Отладчик Transact SQL не поддерживает SQL Server 2005 и более ранние версии.

Что мешает взять отладчик для вашей версии ?

topdon
Если я из функции вырезаю код и вставляю в скрипт, то все работает.

Значит ошибка в той части, что не вырезана
3 фев 15, 15:30    [17212623]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
topdon
Отладчик Transact SQL не поддерживает SQL Server 2005 и более ранние версии.

ето в каого перепугу то ? он еще в 2000 версии появился
3 фев 15, 15:33    [17212654]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Зачем тут отладчик?
Нельзя что ли тело функции отдельно выполнять?
И переменные в PRINT или SELECT помещать?

Лучше бы рассказали, что и из чего надо получить.
Почти уверен, не нужна тут функция. По крайней мере скалярная.
3 фев 15, 15:37    [17212683]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
output параметр
Guest
Думаю, ТС имеет ввиду output параметр
3 фев 15, 15:45    [17212769]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4271
topdon
set @val = substring(@s, @startdata+@start+5,@len-3);
print '900 ='+'"'+ @Val+'"';
[b]set @ret = libra1.dbo.getdis(@val, @r);[/b]
...
print 'Дисциплина "'+@ret+'"';
Print 'Остаток строки ="'+ @r+'"';
Остатка нет, т.е. он пустой. Два дня бьюсь. Стыдно конечно.

А с какого перепугу он должен вам что-то возвращать?
Хотите чтобы вернул - испльзуйте процедуру и "out".
В функциях, насколько мне известно, такой возможности нет.
3 фев 15, 15:48    [17212799]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
Пример строки для разбора. Все вроде просто. Нужно в цикле находить дисциплины
Но здесь могут быть и специальности s

"Реклама в сфере услугdСервисная деятельностьdЭкономика и управление сферы услуг"

перед d упр. символ US=char(31) не виден. В конце строки [US][GS]
Дисциплина находится верно. Я хотел возвращать очередную дисциплину и в параметре отрезанную слева строку.
3 фев 15, 15:53    [17212852]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
Glory
Member

Откуда:
Сообщений: 104760
topdon
Я хотел возвращать очередную дисциплину и в параметре отрезанную слева строку.

Это называется парсинг строки. Только на данном форуме несколько десятков тем со множеством алгоритмов и реализаций парсинга. Для всевозможных версий сервера.
3 фев 15, 15:59    [17212904]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
topdon
Member

Откуда: Ростов- на- Дону
Сообщений: 564
SQL2008,

Вот я так и думал. Придется на процедуру переписать.
3 фев 15, 16:15    [17213055]     Ответить | Цитировать Сообщить модератору
 Re: Вернуть измененный параметр функции  [new]
iap
Member

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

Функция, которая делит строку на слова
3 фев 15, 16:23    [17213141]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить