Как использовать временные таблицы внутри Begin Work - PullRequest
1 голос
/ 18 октября 2019

Я пытаюсь создать скрипт с набором инструкций внутри блока BEGIN WORK / COMMIT, но по какой-то причине временная таблица не создается или удаляется в какой-то момент:

thisВот сценарий, над которым я работаю:

-- PHASE2:
BEGIN WORK;
--create a temp table
CREATE temp table IF NOT EXISTS temp_users (
    reg_id char(2),
    cntry char(2),
    name varchar(25)
);

--insert to temp table
INSERT INTO temp_users(reg_id,cntry,name)
SELECT region,country,usr_name FROM user_data WHERE cntry = 'AU';

-- more work with the temp table below..
COMMIT;

Но когда я выполняю этот сценарий, я получаю сообщение об ошибке, потому что temp_users не существует.

1 Ответ

0 голосов
/ 18 октября 2019

Я не уверен, с какой проблемой вы сталкиваетесь. Используя Informix 12.10.FC6 (время для обновления - а затем немного) в Ubuntu 18.04, я могу запустить это без ошибок:

DROP TABLE IF EXISTS user_data;
CREATE TABLE user_data
(
    region   CHAR(2) NOT NULL,
    country  CHAR(2) NOT NULL,
    cntry    CHAR(2) NOT NULL,
    usr_name VARCHAR(25) NOT NULL
);

-- PHASE2:
BEGIN WORK;
--create a temp table
CREATE TEMP TABLE IF NOT EXISTS temp_users (
    reg_id CHAR(2),
    cntry  CHAR(2),
    name   VARCHAR(25)
);
--insert to temp table
INSERT INTO temp_users(reg_id, cntry, name)
SELECT region, country, usr_name FROM user_data WHERE cntry = 'AU';
-- more work with the temp table below..
COMMIT;

Я не знаю, почему в вашей таблице user_data есть столбцы countryи cntry;это не очевидно.

Попробуйте создать временную базу данных (базу данных с новым именем, от которой вы скоро избавитесь), а затем запустите сценарий, показанный для нее, с помощью DB-Access. Это должно работать, создавая такую ​​трассировку (я использовал stores в качестве базы данных и файл xyz.sql для хранения скрипта):

$ dbaccess stores xyz

Database selected.


Table dropped.


Table created.


Started transaction.


Temporary table created.


0 row(s) inserted.


Data committed.


Database closed.

$

Что вы получаете?

...