Stored procedures 在Informix存储过程中使用UNLOAD语句

Stored procedures 在Informix存储过程中使用UNLOAD语句,stored-procedures,informix,Stored Procedures,Informix,我正在写一个Informix过程。 我创建了一个临时表,但我想在文本文档中导出此数据。 我不能在SPL中使用UNLOAD语句;有人能帮我吗?您会在Informix服务器或客户端上执行它吗?哪个是IDS版本 以下是一种使用的方法,该文件存储在服务器主机上: CREATE PROCEDURE sp_unload() CREATE TEMP TABLE temp1( col1 INT ) WITH NO LOG; INSERT INTO temp1 VALU

我正在写一个Informix过程。 我创建了一个临时表,但我想在文本文档中导出此数据。
我不能在SPL中使用UNLOAD语句;有人能帮我吗?

您会在Informix服务器或客户端上执行它吗?哪个是IDS版本

以下是一种使用的方法,该文件存储在服务器主机上:

CREATE PROCEDURE sp_unload()

    CREATE TEMP TABLE temp1(
        col1 INT
    ) WITH NO LOG;

    INSERT INTO temp1 VALUES (1);
    INSERT INTO temp1 VALUES (2);
    INSERT INTO temp1 VALUES (3);

    CREATE EXTERNAL TABLE temp1_ext 
    SAMEAS temp1
    USING (
        DATAFILES ("DISK:/home/informix/temp.dat") 
        );

    INSERT INTO temp1_ext SELECT * FROM temp1;

    DROP  TABLE temp1_ext;
    DROP  TABLE temp1;

END PROCEDURE;
如果要在客户端服务器上存储,则必须提供所使用的客户端类型(OS以及连接到IDS的方式)

如果您使用dbaccess,则可以使用SP创建临时表,并在提交数据的
卸载后卸载

如果使用其他客户端,您最好的选择可能是将您的SP重写为一个


然后,迭代它并写入文件。

您会在Informix服务器上执行它还是在客户端上执行它?哪个是IDS版本

以下是一种使用的方法,该文件存储在服务器主机上:

CREATE PROCEDURE sp_unload()

    CREATE TEMP TABLE temp1(
        col1 INT
    ) WITH NO LOG;

    INSERT INTO temp1 VALUES (1);
    INSERT INTO temp1 VALUES (2);
    INSERT INTO temp1 VALUES (3);

    CREATE EXTERNAL TABLE temp1_ext 
    SAMEAS temp1
    USING (
        DATAFILES ("DISK:/home/informix/temp.dat") 
        );

    INSERT INTO temp1_ext SELECT * FROM temp1;

    DROP  TABLE temp1_ext;
    DROP  TABLE temp1;

END PROCEDURE;
如果要在客户端服务器上存储,则必须提供所使用的客户端类型(OS以及连接到IDS的方式)

如果您使用dbaccess,则可以使用SP创建临时表,并在提交数据的
卸载后卸载

如果使用其他客户端,您最好的选择可能是将您的SP重写为一个


然后,对其进行迭代并写入文件。

服务器无法识别UNLOAD语句。DB Access、ISQL和I4GL等程序将其识别并模拟为一条语句(基本上是一条SELECT语句,当然是从服务器读取数据并将其写入客户机上的文件)。因此,该语句在SPL(存储过程语言)中不起作用,因为它是由服务器上的服务器运行的。(断开连接的一个原因是服务器无法直接写入客户端上的文件。)


所以,你需要做不同的事情。his中建议的解决方案是完全合理的,只要在服务器计算机上创建的文件正常。

服务器无法识别UNLOAD语句。DB Access、ISQL和I4GL等程序将其识别并模拟为一条语句(基本上是一条SELECT语句,当然是从服务器读取数据并将其写入客户机上的文件)。因此,该语句在SPL(存储过程语言)中不起作用,因为它是由服务器上的服务器运行的。(断开连接的一个原因是服务器无法直接写入客户端上的文件。)


所以,你需要做不同的事情。his中建议的解决方案是完全合理的,只要在服务器计算机上创建的文件正常。

当然,我想将此表卸载到磁盘上。我这样调用:*执行过程my_proce()**当然,我想把这个表卸载到磁盘上。我这样调用:*执行过程my_proce()**如果您使用的是IFX版本>=11.70(不记得修复),您可以尝试使用UTL_文件包,我不会将此作为答案发布,因为我从未使用过它,但。。。也许你可以用它把数据保存在TXT文件中。检查您是否正在使用IFX版本>=11.70(不记得修复),您可以尝试使用UTL_文件包,我不会将此作为答案发布,因为我从未使用过它,但。。。也许你可以用它把数据保存在TXT文件中。检查