Hi When i went for an interview they asked me this question.
Create table course(Name CHAR(10));
insert into course values ('Java');
insert into course values ('Oracle');
insert into course values ('Python');
insert into course values ('C');
insert into course values ('C++');
o/p:
Java Oracle python c c++
Thanks in advance, Sandhya.
Advertisement
Answer
I presume that NAME column’s datatype should have been VARCHAR2, not CHAR.
Anyway, another option (similar to Tejash’s LISTAGG) which uses XMLAGG and is safer if the result is larger than 4000 characters.
SQL> SELECT RTRIM ( 2 XMLAGG (XMLELEMENT (e, name || ' ') ORDER BY null).EXTRACT ( 3 '//text()'), 4 ',') 5 result 6 FROM course; RESULT ------------------------------------------------------------ Java Oracle Python C C++ SQL>
Or, as you tagged the question with PL/SQL tag, then an anonymous PL/SQL block might look like this:
SQL> set serveroutput on SQL> SQL> declare 2 l_result varchar2(100); 3 begin 4 for cur_r in (select name from course) loop 5 l_result := l_result ||' '|| cur_r.name; 6 end loop; 7 8 dbms_output.put_line(trim(l_result)); 9 end; 10 / Java Oracle Python C C++ PL/SQL procedure successfully completed. SQL>
Or – similarly – a function:
SQL> create or replace function f_course 2 return varchar2 3 is 4 l_result varchar2(100); 5 begin 6 for cur_r in (select name from course) loop 7 l_result := l_result ||' '|| cur_r.name; 8 end loop; 9 10 return trim(l_result); 11 end; 12 / Function created. SQL> select f_course from dual; F_COURSE -------------------------------------------------------------- Java Oracle Python C C++ SQL>
Or, a procedure with an OUT parameter:
SQL> create or replace procedure p_course (par_result out varchar2) 2 is 3 l_result varchar2(100); 4 begin 5 for cur_r in (select name from course) loop 6 l_result := l_result ||' '|| cur_r.name; 7 end loop; 8 9 par_result := trim(l_result); 10 end; 11 / Procedure created. SQL> declare 2 l_out varchar2(100); 3 begin 4 p_course(l_out); 5 dbms_output.put_line(l_out); 6 end; 7 / Java Oracle Python C C++ PL/SQL procedure successfully completed. SQL>
As you can see, quite a few options; use the one that most suits your needs.