Как я могу отбросить таблицу, если она существует в SQL Server 2000?

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

20
задан Keng 6 June 2012 в 19:29
поделиться

7 ответов

Или более быстрый:

IF OBJECT_ID('temp_ARCHIVE_RECORD_COUNTS') IS NOT NULL  
  DROP TABLE temp_ARCHIVE_RECORD_COUNTS  
33
ответ дан 29 November 2019 в 22:56
поделиться
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U'))
DROP TABLE TableName;
GO

можно проверить список определений типа в sys.objects таблице здесь , если Вы хотите проверить, существуют ли другие объекты в Вашей базе данных.

10
ответ дан 29 November 2019 в 22:56
поделиться

Никто еще не упомянул этот метод:

if exists (select * from INFORMATION_SCHEMA.TABLES where TABLE_NAME='MyTable') 
begin 
    drop table MyTable
end

Это - самый портативный метод - он продолжает работать, по крайней мере, MSSQL2000 до MSSQL2008.

таблицы INFORMATION_SCHEMA являются частью стандарта SQL-92.

8
ответ дан 29 November 2019 в 22:56
поделиться

Одна вещь помнить, когда Вы отбрасываете и возражаете и затем добавляете назад к базе данных, также добавляют любые полномочия назад к таблице. Это сбило нас с толку неоднократно.

я проголосовал за ответ TracyNixon. Я сказал бы, что Вы хотите избегать запросов sysobjects таблицы непосредственно, потому что обновление Microsoft могло взломать такой код. Вы изолируете себя от этого при помощи функции OBJECT_ID.

3
ответ дан 29 November 2019 в 22:56
поделиться

Уверенный:

IF OBJECT_ID('YOURTABLENAME') IS NOT NULL

, где YOURTABLENAME то, что название Вашей таблицы.

, Если это - временная таблица, затем просто, добавьте tempdb.# прежде чем прежде OBJECT_ID вызов функции.

3
ответ дан 29 November 2019 в 22:56
поделиться

Необходимо проверить таблица

sysobjects
1
ответ дан 29 November 2019 в 22:56
поделиться

Следующие работы, просто замените ИМЯ ТАБЛИЦЫ своей таблицей

IF EXISTS( SELECT * FROM dbo.sysobjects where id = object_id(N'TABLENAME') AND OBJECTPROPERTY(id, N'IsTable') = 1)
BEGIN
    DROP TABLE TABLENAME
END
1
ответ дан 29 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: