Проверьте, существует ли таблица SQL - PullRequest
0 голосов
/ 24 марта 2011

У меня есть запрос, как показано ниже:

    INSERT INTO CarnetMaster.GlassLookupCapacitySpecs
(ID, CODE, NVIC, RELEASE, DISCON, DRV, TORQUE, KW, BORESTROKE, VINNUMBER, WIDTH, WHEELBASE, SEATS, COMPRATIO, TOWCAP, STEER,
TURNCIR, HEIGHT, LENGTH, VWIDTH, KERBWT, PAYLOAD, GCM, GVM)

SELECT NEWID(), CODE, NVIC, RELEASE, DISCON, DRV, TORQUE, KW, [BORE-STROKE], [VIN NUMBER], WIDTH, WHEELBASE, SEA, [TS COMPRAT], [IO TOWC],
[AP STE], [ER TURNC], [IR HEIG], [HT LENG], [TH VWID], [TH KERB], [WT PAYLO], [AD GCM], GV
FROM CVG86_SPE

Как проверить, существует ли таблица, затем выбрать из таблицы CVG86_SPE и вставить? Если таблица не существует, она ничего не должна делать.

Ответы [ 2 ]

3 голосов
/ 24 марта 2011


вы можете сделать это следующим образом:
Синтаксис SQL 2000

    IF EXISTS (SELECT 1 FROM sysobjects  WHERE xtype='u' AND name='CVG86_SPE') 
BEGIN
             INSERT INTO CarnetMaster.GlassLookupCapacitySpecs
    (ID, CODE, NVIC, RELEASE, DISCON, DRV, TORQUE, KW, BORESTROKE, VINNUMBER, WIDTH, WHEELBASE, SEATS, COMPRATIO, TOWCAP, STEER,
    TURNCIR, HEIGHT, LENGTH, VWIDTH, KERBWT, PAYLOAD, GCM, GVM)

    SELECT NEWID(), CODE, NVIC, RELEASE, DISCON, DRV, TORQUE, KW, [BORE-STROKE], [VIN NUMBER], WIDTH, WHEELBASE, SEA, [TS COMPRAT], [IO TOWC],
    [AP STE], [ER TURNC], [IR HEIG], [HT LENG], [TH VWID], [TH KERB], [WT PAYLO], [AD GCM], GV
    FROM CVG86_SPE 
END

SQL 2005 и более поздние версии:

        IF EXISTS ( SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'CVG86_SPE' )
BEGIN
INSERT INTO CarnetMaster.GlassLookupCapacitySpecs
        (ID, CODE, NVIC, RELEASE, DISCON, DRV, TORQUE, KW, BORESTROKE, VINNUMBER, WIDTH, WHEELBASE, SEATS, COMPRATIO, TOWCAP, STEER,
        TURNCIR, HEIGHT, LENGTH, VWIDTH, KERBWT, PAYLOAD, GCM, GVM)

        SELECT NEWID(), CODE, NVIC, RELEASE, DISCON, DRV, TORQUE, KW, [BORE-STROKE], [VIN NUMBER], WIDTH, WHEELBASE, SEA, [TS COMPRAT], [IO TOWC],
        [AP STE], [ER TURNC], [IR HEIG], [HT LENG], [TH VWID], [TH KERB], [WT PAYLO], [AD GCM], GV
        FROM CVG86_SPE
END
1 голос
/ 24 марта 2011

Другой способ сделать то же самое в SQL Server - использовать функцию OBJECT_ID():

IF OBJECT_ID('<i>table name</i>', 'U') IS NOT NULL BEGIN
  INSERT ...
  ...
END

Второй параметр заставляет функцию искать таблицу, а не произвольный объект, такой как хранимая процедура или пользовательская функция.

Если вы проверяете наличие временной таблицы, используйте ее следующим образом:

IF OBJECT_ID('tempdb..#<i>tmp table name</i>') IS NOT NULL BEGIN
  INSERT ...
  ...
END

(Здесь второй параметр не нужен, поскольку из имени объекта видно, что это может быть только таблица.)

...