为什么dbms不会在plsql中的单行中打印所有行

时间:2014-07-30 15:30:50

标签: plsql

我的文件名为book.txt,其中的行如下:

$ cat book.txt

English
French
Russian

pl sql代码中,我需要读取此文件,并在一行中生成输出,逗号分隔如下:

English, French, Russian

请帮忙!

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方法是创建外部表,然后使用普通DML处理文件中的数据:

CREATE OR REPLACE DIRECTORY YOUR_DIR AS '/directory/where/your/file/is/located';

CREATE TABLE BOOK_TABLE
  (BOOK_LANGUAGE  VARCHAR2(2000))
  ORGANIZATION EXTERNAL
    (DEFAULT DIRECTORY YOUR_DIR
     LOCATION ('book.txt'));

DECLARE
  bFirst_row   BOOLEAN := TRUE;
BEGIN
  FOR aRow IN (SELECT * FROM BOOK_TABLE)
  LOOP
    IF NOT bFirst_row THEN
      DBMS_OUTPUT.PUT(', ');
    END IF;

    bFirst_row := FALSE;

    DBMS_OUTPUT.PUT(aRow.BOOK_LANGUAGE);
  END LOOP;

  DBMS_OUTPUT.PUT_LINE('');
END;

您需要更改在创建YOUR_DIR时指定的目录,因为我不知道此文件在您的计算机上的位置。或者只需在此答案下方添加评论,并附上目录名称。

祝你好运!