С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
7 / 7 / 0
Регистрация: 14.03.2013
Сообщений: 231

Ошибка - объект уже присутствует в БД

08.12.2020, 12:43. Показов 1353. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет.
Подскажите в чем ошибка.
Создаю функцию, но не могу понять почему не срабатывает условие на удаление.

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
......
......
IF OBJECT_ID (N'dbo.getTableFromCharlist', N'IF') IS NOT NULL  
    DROP FUNCTION dbo.getTableFromCharlist;  
GO 
 
CREATE FUNCTION dbo.getTableFromCharlist (@list ntext, @delimiter nchar(1) = N',')
RETURNS @tbl TABLE (listpos int IDENTITY(1, 1) NOT NULL, str varchar(4000), nstr nvarchar(2000)) AS
BEGIN
    DECLARE @pos      int,
            @textpos  int,
            @chunklen smallint,
            @tmpstr   nvarchar(4000),
            @leftover nvarchar(4000),
            @tmpval   nvarchar(4000)
 
    SET @textpos = 1
    SET @leftover = ''
    WHILE @textpos <= datalength(@list) / 2
    BEGIN
        SET @chunklen = 4000 - datalength(@leftover) / 2
        SET @tmpstr = @leftover + substring(@list, @textpos, @chunklen)
        SET @textpos = @textpos + @chunklen
 
        SET @pos = charindex(@delimiter, @tmpstr)
 
        WHILE @pos > 0
        BEGIN
        SET @tmpval = ltrim(rtrim(left(@tmpstr, charindex(@delimiter, @tmpstr) - 1)))
        INSERT @tbl (str, nstr) VALUES(@tmpval, @tmpval)
        SET @tmpstr = substring(@tmpstr, @pos + 1, len(@tmpstr))
        SET @pos = charindex(@delimiter, @tmpstr)
        END
 
        SET @leftover = @tmpstr
    END
 
    INSERT @tbl(str, nstr) VALUES (ltrim(rtrim(@leftover)), ltrim(rtrim(@leftover)))
    RETURN
END
GO
 
......
......
 
IF OBJECT_ID (N'dbo.getTableFromCharlist', N'IF') IS NOT NULL  
    DROP FUNCTION dbo.getTableFromCharlist;  
GO
Вроде IF = встроенная функция SQL с табличным значением
Но при повторном выполнении система ругается:

Msg 2714, Level 16, State 3, Procedure getTableFromCharlist, Line 2
There is already an object named 'getTableFromCharlist' in the database.


Проверяю в самой БД, данная функция пристутствует:

DAX5_TST \ Programmability \ Function \ Table-valued Functions \ dbo.getTableUserId

Удаляю вручную - ошибки не возникает.
Или убираю условие IF, тоже ошибки нет.

Т.е. вывод:
условие не срабатывает

SQL
1
IF OBJECT_ID (N'dbo.getTableFromCharlist', N'IF') IS NOT NULL
Менял N'IF' на N'P' эффекта не дало.

Добавлено через 8 минут
Нашел решение, нужно заменить N'IF' на N'TF'
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.12.2020, 12:43
Ответы с готовыми решениями:

Добавить в уже существующий объект свойство и положить в него объект
У меня имеется такая вложенность в редьюсере initialState = { prop1: { props2: { prop3: {id:...

Ошибка "Объект уже определен" (LNK2005)
если в ставить этот код в h файл то пишет ошибку не знаю уже как решить её не где нету enum Tabs с таким же названием enum Tabs { ...

Ошибка "В базе данных уже существует объект с именем "Blogger"
Приветствую, уважаемые форумчане Начал изучать базы данных, не могу разобраться с ошибкой &quot;В базе данных уже существует объект с...

2
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
08.12.2020, 12:44
Цитата Сообщение от oleggy Посмотреть сообщение
Вроде IF = встроенная функция SQL с табличным значением
Ваша функция не инлайновая. Поэтому нужно TF, а не IF.
В принципе, можно вообще тип объекта не указывать. Но тогда есть риск удалить что-нибудь не то.

ЗЫ: Полно более эффективных реализаций данной задачи, чем ваша. А начиная с SQL Server 2017 есть штатная функция string_split.
0
 Аватар для Andrey-MSK
3317 / 2204 / 387
Регистрация: 14.08.2018
Сообщений: 7,411
Записей в блоге: 4
08.12.2020, 12:46
T-SQL
1
2
3
IF OBJECT_ID ('dbo.getTableFromCharlist', 'TF') IS NOT NULL  
    DROP FUNCTION dbo.getTableFromCharlist;  
GO
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.12.2020, 12:46
Помогаю со студенческими работами здесь

Deserialize - ошибка. в документе XML присутствует ошибка - странный глюк
Происходит ошибка в следующей функции: private void LoadSettingsFromFile() { string folderToSaveSettings =...

Выскакивает ошибка: В документе XML (1, 2) присутствует ошибка
Возникает ошибка здесь: object obj = mySerializer.Deserialize(ms); class Program { static void Main(string args) { using...

Ошибка, что база уже открыта oткрыть Exclusive уже неудaется.
Еслй етoт пример пoстaвить в цикл (типo пoвтoряетсья через 1 мин.), тo через кaкиx тo 25 - 35 рaзoв видoет oшибку, чтo бaзa уже oткрытa и...

Почему допустимо создавать объект по другому объекту, но нельзя присваивать уже созданный объект, другому созданному объекту?
Это можно : Array a(10); a.set(0,5); Array b(a); А это нельзя : Array a(10); Array b(20); a = b;

Присутствует ли ошибка?
Собственно задание такого: написать подпрограмму для выборки из некоторого саммива двойных слов без знака всех элементов кратных заданному...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru