2014-03-30 2 views
0

Прочитав слишком много на эту тему, я не знаю, как написать UDF, и где его сохранить.Создание базового SQL UDF

Вместо того, чтобы писать то же вложенный REPLACE() несколько раз в нескольких других сценариях, я хотел бы быть в состоянии назвать его, как мне нужно, что-то вроде:

Targ.Name = dbo.fn_add_sym(isnull(Targ.Name, Src.Name)) 

У меня есть следующие функции, но Я не смог проверить это, так как я не знаю, где его поставить.

CREATE FUNCTION dbo.fn_add_sym(@string NVARCHAR(max)) 
RETURNS NVARCHAR(max) 
WITH SCHEMABINDING 
AS 
begin 
return 
    @string = REPLACE(
       REPLACE(
       REPLACE(
        REPLACE(
        REPLACE(
         REPLACE(@string, N'%2b', N'+') 
        , N'%2d', N'-') 
        , N'%3d', N'=') 
       , N'%22', N'"') 
       , N'%5f', N'_') 
      ,'"', N'"') 

end 
+0

Вы отметили свой вопрос как с MySQL, так и с SQL Server. Который из них? – Szymon

+0

Как именно вы хотите его использовать? – Szymon

+0

Удален тег mysql, потому что запрос представляется синтаксисом SQL Server. –

ответ

1

Here - это SQL-скрипт, который показывает функцию.

Ниже приведен код, чтобы проверить:

select dbo.fn_add_sym('abc%5fdef') 

Единственная ошибка синтаксиса у вас был return @string =. @string = не требуется.

+0

Спасибо! Бит, который мне не хватало, заключался в том, что я должен был выполнить функцию самостоятельно, чтобы добавить ее в db! DOH !!!!! :) –

Смежные вопросы