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

Откуда:
Сообщений: 961
CREATE FUNCTION dbo.f_CheckTableExistance (
@TableName varchar(100)
)
RETURNS bit
AS
BEGIN

declare isExist bit

if (@TableName is null or @TableName = '') 
  SET isExist = 0
else
  SELECT isExist = count(*) FROM sysobjects WHERE (xtype='u' or xtype='v') and name = @TableName
  
RETURN isExist

END
'bit' is not a recognized CURSOR option.
Incorrect syntax near '='.


Не могу создать функцию, проверяющую существование таблицы/представления. Помогите пожалуйста

τι τò ον αει, γένεσιν δε ουκ εχον, και τι τò γιγνόμενον μεν αει, ον δε ούδέποτε
29 июн 10, 17:01    [9019143]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
cpasik
Member

Откуда:
Сообщений: 2
Dark_Scorpion,

а обычный object_id не подходит?

if object_id(@tableName) is not null
 .....
29 июн 10, 17:08    [9019227]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
i2akai1
Member

Откуда: Петербург
Сообщений: 217
cpasik,

@isExists
29 июн 10, 17:13    [9019281]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Prolog
Member

Откуда: Москва
Сообщений: 2793
@isExist
29 июн 10, 17:14    [9019293]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
cpasik
Member

Откуда:
Сообщений: 2
Prolog,

не заметил в чем ошибка :) И еще наверное нужно тип поменять с bit на int у внутренней переменной, т.к. count возвращает точно больше, чем влезает в bit
29 июн 10, 17:16    [9019318]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
Подходит!
А только как узнать является ли это вьюха или таблица?
Мне надо будет юзать эту проверку перед удалением именно таблицы или вьюхи.
Нельзя удаление производить если пришло название какого-то другого объекта
29 июн 10, 17:17    [9019332]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Думающий
Member

Откуда: Месный
Сообщений: 963
автор
INFORMATION_SCHEMA.VIEWS
INFORMATION_SCHEMA.TABLES


sysobjects на наш метод
29 июн 10, 17:19    [9019371]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Dark_Scorpion
Member

Откуда:
Сообщений: 961
это как?
29 июн 10, 17:21    [9019394]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Думающий
Member

Откуда: Месный
Сообщений: 963
Dark_Scorpion
это как?

Это представления выдающие список таблиц и представлений, в бол написано все подробно
29 июн 10, 17:25    [9019448]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
/*VIEW*/
IF OBJECT_ID(N'Имя View','V') IS NULL
 PRINT N'View [Имя View] не существует'
ELSE
 PRINT N'View [Имя View] существует';

/*TABLE*/
IF OBJECT_ID(N'Имя Table','U') IS NULL
 PRINT N'Таблица [Имя таблицы] не существует'
ELSE
 PRINT N'Таблица [Имя таблицы] существует';
Однако, если у пользователя нет прав на объект или на метаданные,
в любом случае вернётся NULL (начиная с SQL2005).
29 июн 10, 18:14    [9019905]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Функция проверки существования таблицы/представления  [new]
Ira2211
Guest
Подскажите, а как проверить на существование партиции в таблице?
29 мар 12, 19:50    [12336272]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Ira2211
Подскажите, а как проверить на существование партиции в таблице?


sys.partitions
29 мар 12, 19:53    [12336283]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Ira2211
Guest
Knyazev Alexey,спасибо!
А можно написать так в SQL-developer в процедуре:

begin

set @numrows = ( select count(1) from sys.partitions where object_id = 'Имя_таблицы' and partition_id = 'Имя_партиции');

if not (@numrows>0)
....--тут я тогда ее создам
endif;

end;

или я неправильно задаю object_id,partition_id?
29 мар 12, 20:47    [12336444]     Ответить | Цитировать Сообщить модератору
 Re: Функция проверки существования таблицы/представления  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Ira2211
select count(1) from sys.partitions where object_id = 'Имя_таблицы' and partition_id = 'Имя_партиции'

вы в курсе, что
object_id и partition_id числа?

и что вообще вы хотите получить вашим запросом?

для проверки range_values есть своё представление

sys.partition_range_values
31 мар 12, 10:37    [12344398]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить