【问题标题】:Trying to print via a table of records尝试通过记录表打印
【发布时间】:2019-08-19 21:19:14
【问题描述】:

我正在尝试使用记录表进行打印。原表如下:

 CREATE TABLE dept1
 ( DEPTNO NUMBER(3) PRIMARY KEY,
 DNAME VARCHAR2(20),
 LOC VARCHAR2(20)
  );

Dept = {(10, 'ACCOUNTING', 'NEW YORK'),
 (20, 'RESEARCH', 'DALLAS'),
 (30, 'SALES', 'CHICAGO'),
 (40, 'OPERATIONS', 'DALLAS'),
 (50, 'MARKETING', 'BOSTON')}

我认为我正在使用此代码创建一个过程 print_deptlist,它将打印我创建的记录 deptlist 中的所有记录:我们需要使用该方法

CREATE OR REPLACE PROCEDURE print_deptlist IS
deptlist dept1%rowtype;
Begin
  Select * into deptlist from dept1;
  DBMS_OUTPUT.PUT_LINE(DEPTLIST.deptno || ',' || deptlist.dname  || ',' || deptlist.loc);
end;
/

见上文...

我期待的结果看起来列出了包含以下记录的列名:

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    可以通过

    来使用这样的循环语句

    BULK COLLECT 这是一种SELECT语句,一次提取即可检索多行,也提高了数据检索的速度

    SQL> SET SERVEROUTPUT ON 
    
    SQL> CREATE OR REPLACE PROCEDURE print_deptlist IS
        TYPE tab_dept IS TABLE OF dept1%rowtype;
        deptlist tab_dept;
    BEGIN
      SELECT * BULK COLLECT INTO deptlist FROM dept1;
       FOR i IN 1..deptlist.count
       LOOP
        dbms_output.put_line(deptlist(i).deptno || ',' || deptlist(i).dname 
                                                || ',' || deptlist(i).loc);
       END LOOP;
    END;
    /
    

    Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 2021-05-24
      • 1970-01-01
      相关资源
      最近更新 更多