Informix 如何在“开始工作”中使用临时表

Informix 如何在“开始工作”中使用临时表,informix,Informix,我正在尝试在BEGIN WORK/COMMIT块中创建一个包含一组指令的脚本,但由于某些原因,临时表没有被创建或在某个点被删除: 这就是我正在编写的脚本: -- 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 t

我正在尝试在BEGIN WORK/COMMIT块中创建一个包含一组指令的脚本,但由于某些原因,临时表没有被创建或在某个点被删除:

这就是我正在编写的脚本:

-- 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;

但是当我执行这个脚本时,我得到了一个错误,因为临时用户不存在。

我不确定您遇到了什么问题。在Ubuntu18.04上使用Informix 12.10.FC6(升级时间到了,然后是一些),我可以毫无错误地运行它:

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\u data
表中有
country
cntry
列;这并不明显

尝试创建一个临时数据库(一个具有新名称的数据库,您很快就会摆脱它),然后使用DB Access对其运行所显示的脚本。它应该可以工作,创建如下跟踪(我使用
存储
作为数据库,使用文件
xyz.sql
来包含脚本):


你得到了什么?

我不确定你遇到了什么问题。在Ubuntu18.04上使用Informix 12.10.FC6(升级时间到了,然后是一些),我可以毫无错误地运行它:

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\u data
表中有
country
cntry
列;这并不明显

尝试创建一个临时数据库(一个具有新名称的数据库,您很快就会摆脱它),然后使用DB Access对其运行所显示的脚本。它应该可以工作,创建如下跟踪(我使用
存储
作为数据库,使用文件
xyz.sql
来包含脚本):


你得到了什么?

我的问题是,即使我有create temp table语句,当我尝试向temp表格(temp_用户)插入数据时,我得到一个错误,如果你复制我显示的代码(到一次性数据库中-你可能不想删除真正的
用户数据
表格),temp_用户表格就不存在了,您仍然收到错误吗?是的,即使插入原始值(没有选择),我也会收到相同的错误SQL error[42000]:指定的表(临时用户)不在数据库中。我的问题是,即使我有create temp table语句,当我尝试将数据插入临时表(临时用户)时我得到一个错误,它说临时用户表不存在如果你复制我显示的代码(到一次性数据库-你可能不想删除真实的
user\u数据
table),你仍然会得到错误吗?是的,即使插入原始值(没有选择),我也会得到相同的错误SQL错误[42000]:指定的表(临时用户)不在数据库中。您使用的Informix版本是什么?您使用的Informix版本是什么?