Создайте таблицу / столбец, если не существует для DB2 - без использования sp, просто запрос вручную - PullRequest
0 голосов
/ 12 июля 2020

Я попытался использовать синтаксис SQL:

CREATE TABLE IF NOT EXISTS PWRNTCDT.customers_contacts(
    customer_id varchar(10) NOT NULL DEFAULT '',
  contact_index INT NOT NULL,
  is_primary SMALLINT NOT NULL,
  f_name varchar(40) DEFAULT NULL,
  l_name varchar(40) DEFAULT NULL,
  job_title varchar(60) DEFAULT NULL,
  phone varchar(30) DEFAULT NULL,
  mobile varchar(30) DEFAULT NULL,
  email varchar(254) DEFAULT NULL
);

и получил ошибку, указывающую на синтаксическую ошибку в части «существует». Ничего не нашел в Интернете. Спасибо!

1 Ответ

1 голос
/ 13 июля 2020

Такой функции CREATE TABLE в DB2 для IBM i нет. Есть CREATE OR REPLACE, но нет CREATE IF NOT EXISTS. См. Описание оператора CREATE TABLE в документации.

Но для этого вы можете использовать составной оператор Dynami c .

-- Use some another statement terminator in your tool you run this statement from like "@" as below
-- Or don't use this statement terminator at all, if you run the statement from some external program
BEGIN
  IF NOT EXISTS
  (
  SELECT 1 
  FROM QSYS2.SYSTABLES
  WHERE TABLE_SCHEMA='PWRNTCDT' AND TABLE_NAME='CUSTOMER_CONTACTS'
  ) THEN

  CREATE TABLE PWRNTCDT.customers_contacts
  (
  customer_id varchar(10) NOT NULL DEFAULT '',
  contact_index INT NOT NULL,
  is_primary SMALLINT NOT NULL,
  f_name varchar(40) DEFAULT NULL,
  l_name varchar(40) DEFAULT NULL,
  job_title varchar(60) DEFAULT NULL,
  phone varchar(30) DEFAULT NULL,
  mobile varchar(30) DEFAULT NULL,
  email varchar(254) DEFAULT NULL
  );

  END IF;
END@
...