Search code examples
oracleplsqlsqlfiddle

SQL Fiddle Output Error


Actually I am quite new to PL/SQL

I created the following table using oracle pl/sql in SQL Fiddle

create table Employee(name varchar2(100),id integer, salary integer,PRIMARY KEY(id));
insert into Employee(name,id,salary) values('sa',94,100);
insert into Employee(name,id,salary) values('pr',88,150);
insert into Employee(name,id,salary) values('ji',33,900);
insert into Employee(name,id,salary) values('na',24,880);
insert into Employee(name,id,salary) values('po',65,770);
insert into Employee(name,id,salary) values('ri',69,910);
insert into Employee(name,id,salary) values('uj',12,650);
insert into Employee(name,id,salary) values('ad',43,440);
insert into Employee(name,id,salary) values('sam',40,550);

I executed the following query

 DECLARE
 employee_record Employee%ROWTYPE;
 BEGIN
 select * into employee_record from Employee where id>90;
 dbms_output.put_line(employee_record.name||' '||employee_record.id||' '||employee_record.salary);
 END;
 /

I am getting the following output

Record Count: 0; Execution Time: 2ms 

It should print the values present in the employee record, right? Is there something wrong in my sql query or some problem with sql fiddle not able to display dbms_output?


Solution

  • You need to emulate dbms_output.put_line :)

    Schema:

    create table Employee(
      name varchar2(100),
      id integer, 
      salary integer,
      PRIMARY KEY(id)
    );
    
    insert into Employee(name,id,salary) values('sa',94,100);
    insert into Employee(name,id,salary) values('pr',88,150);
    insert into Employee(name,id,salary) values('ji',33,900);
    insert into Employee(name,id,salary) values('na',24,880);
    insert into Employee(name,id,salary) values('po',65,770);
    insert into Employee(name,id,salary) values('ri',69,910);
    insert into Employee(name,id,salary) values('uj',12,650);
    insert into Employee(name,id,salary) values('ad',43,440);
    insert into Employee(name,id,salary) values('sam',40,550);
    
    create table dbmsoutput (
      pos int,
      mes varchar2(4000)
    );
    

    SQL:

    DECLARE
      employee_record Employee%ROWTYPE;
      procedure put_line(p_mes in varchar2) is
         v_pos int; 
      begin  
         select count(0) into v_pos from dbmsoutput;  
         insert into dbmsoutput (pos, mes) values (v_pos, p_mes);
      end;
    BEGIN
     put_line('Hello!  This code is powered by dbms_output emulator :)');
     -- Your code here:
     select * into employee_record from Employee where id>90;
     put_line(employee_record.name||' '||employee_record.id||' '||employee_record.salary);
     --
     put_line('Bye!');
    END;
    /
    
    
    SELECT mes FROM dbmsoutput order by pos
    

    fiddle