Input: Emp Id Output: Firstname, Salary
Input: Emp Id Output: Firstname, Salary
OUTPUT FOR select first_name,SALARY from employees where employee_id = id; end; / SQL> VARIABLE OUTPUT REFCURSOR; SQL> EXEC SP_IN_EMPID(104,:OUTPUT); PL/SQL procedure successfully completed. SQL> PRINT OUTPUT FIRST_NAME SALARY -------------------- ---------Bruce 6000
INPUT: DEPARTMENT ID OUTPUT: DEPARTMENT NAME CREATE OR REPLACE PROCEDURE SP_DIDIN(ID IN NUMBER, A OUT VARCHAR2) AS BEGIN SELECT DEPARTMENT_NAME INTO A FROM DEPARTMENTS WHERE DEPARTMENT_ID = ID; END; / SQL> VARIABLE A VARCHAR2(10); SQL> EXEC SP_DIDIN(110,:A); PL/SQL procedure successfully completed. SQL> PRINT A; A -------------------------------Accounting INPUT: TABLE NAME OUTPUT: NO OF ROWS CREATE OR REPLACE PROCEDURE SP_NO_OF_ROWS(TNAME IN VARCHAR2, NUM OUT NUMBER) AS BEGIN
SELECT NUM_ROWS INTO NUM FROM USER_TABLES WHERE TABLE_NAME = TNAME; END; / SQL> VARIABLE NUM NUMBER; SQL> EXEC SP_NO_OF_ROWS('DEPARTMENTS',:NUM); PL/SQL procedure successfully completed. SQL> PRINT NUM; NUM ---------27 INPUT: TABLE NAME OUTPUT: ENTIRE TABLE create or replace procedure SP_ALLCOLUMNS( TNAME IN VARCHAR2, OUTPUT OUT SYS_REFCURSOR) AS begin OPEN OUTPUT FOR select * from employees; end; / EXEC SP_ALLCOLUMNS(EMPLOYEES, :OUTPUT);
INPUT: DEPARTMENT_ID OUTPUT: FIRST NAME, SALARY CREATE OR REPLACE PROCEDURE SP_JOINS( DNAME IN VARCHAR2, OUTPUT OUT SYS_REFCURSOR) AS BEGIN OPEN OUTPUT FOR SELECT E.FIRST_NAME, E.SALARY FROM EMPLOYEES E, DEPARTMENTS D WHERE E.department_id= D.DEPARTMENT_ID AND DEPARTMENT_NAME = DNAME; END; / SQL> exec sp_joins('Accounting',:output);
PL/SQL procedure successfully completed. SQL> print output; FIRST_NAME SALARY -------------------- ---------Shelley 12000 William 8300
INPUT: Steven OUTPUT: Mr.Steven create or replace procedure SP_concat_Mr(name in varchar2, output out sys_refcursor) as begin open output for SELECT 'MR.'||FIRST_NAME FROM EMPLOYEES WHERE FIRST_NAME =name ; end; / SQL> exec sp_concat_mr('Steven',:output); PL/SQL procedure successfully completed. SQL> print output; 'MR.'||FIRST_NAME ----------------------MR.Steven MR.Steven INPUT: select * from employees ( cursor) OUTPUT: all columns in employees
declare a departments%rowtype; cursor entire_table is select * from departments; begin open entire_table; loop fetch entire_table into a; dbms_output.put_line(a.department_name||', '||a.department_id||', '||a.location_id||', '||a.manager_id); exit when entire_table%notfound;
end loop; close entire_table; end; / INPUT: select * from employees ( cursor) OUTPUT: display only first 5 rows declare a departments%rowtype; cursor entire_table is select * from departments; begin open entire_table; for i in 1..5 loop fetch entire_table into a; dbms_output.put_line(a.department_name||', '||a.department_id||', '||a.location_id||', '||a.manager_id); end loop; close entire_table; end; / INPUT: number OUTPUT: even or odd
create or replace procedure SP_ODD_EVEN( num in number) as A NUMBER(1); BEGIN select mod(num,2) INTO A from dual; if A = 0 then dbms_output.put_line ('EVEN'); ELSE dbms_output.put_line ('ODD'); END IF; END; / SQL> exec sp_odd_even(400); EVEN PL/SQL procedure successfully completed SQL> exec sp_odd_even(81);
DECLARE A EMPLOYEES.FIRST_NAME%TYPE; BEGIN SELECT SUBSTR(FIRST_NAME,-3) INTO A FROM EMPLOYEES WHERE EMPLOYEE_ID =101; DBMS_OUTPUT.PUT_LINE(A); END; INPUT: EMPLOYEE_ID OUTPUT: LAST 3 CHARACTERS IN FIRSTNAME ( AS PROCEDURE) CREATE OR REPLACE PROCEDURE SP_SUBSTR(ID IN NUMBER,A OUT EMPLOYEES.FIRST_NAME%TYPE) AS BEGIN SELECT SUBSTR(FIRST_NAME,-3) INTO A FROM EMPLOYEES WHERE EMPLOYEE_ID =ID; DBMS_OUTPUT.PUT_LINE(A); END; / SQL> VARIABLE A VARCHAR2(15); SQL> EXEC SP_SUBSTR(104,:A); uce PL/SQL procedure successfully completed. SQL> EXEC SP_SUBSTR(104,:A); uce PL/SQL procedure successfully completed. SQL> EXEC SP_SUBSTR(108,:A); ncy PL/SQL procedure successfully completed.
INPUT: NUMBER OUTPUT: WHEN ANUMBER IS GIVEN ,IT SHOULD RETURN THAT MAXIMUM SALARY.SAY IF 1 IS GIVEN ,IT SHOULD RETURN 1ST MAXIMUM SALARY.IF 2 IS GIVEN IT SHOULD RETURN 2ND MAXIMUM SALARY ( AS anonymous block)
declare a number; begin select min (salary) into a from (select salary from employees order by salary desc) where rownum <= 5; dbms_output.put_line(a); end; SQL> @c:\sql\assignment_procedures.sql 14000 PL/SQL procedure successfully completed.
INPUT: NUMBER OUTPUT: WHEN ANUMBER IS GIVEN ,IT SHOULD RETURN THAT MAXIMUM SALARY.SAY IF 1 IS GIVEN ,IT SHOULD RETURN 1ST MAXIMUM SALARY.IF 2 IS GIVEN IT SHOULD RETURN 2ND MAXIMUM SALARY ( AS procedure)
create or replace procedure SP_MAX_SAL(NUM IN NUMBER, A OUT NUMBER) AS begin select min (salary) into a from (select salary from employees order by salary desc) where rownum <= num; end; / SQL> EX SQL> VARIABLE A NUMBER; EXEC SP_MAX_SAL(4,:A); PL/SQL procedure successfully completed. SQL> PRINT A; A ---------17000
INPUT: TABLE NAME OUTPUT: LIST THE COLUMNS IN THE TABLE NAME ( AS ANONYMOUS BLOCK) USING : USER_TAB_COLUMNS
DECLARE CURSOR C1 IS SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='EMPLOYEES'; COLNAME VARCHAR2(20); BEGIN OPEN C1; LOOP DBMS_OUTPUT.PUT_LINE(COLNAME); FETCH C1 INTO COLNAME; EXIT WHEN C1%NOTFOUND; END LOOP; CLOSE C1; END; INPUT: TABLE NAME OUTPUT: LIST THE COLUMNS IN THE TABLE NAME ( AS PROCEDURES) USING : USER_TAB_COLUMNS
CREATE OR REPLACE PROCEDURE SP_LIST_COLUMN_NAME(TNAME IN VARCHAR2,COLNAME OUT SYS_REFCURSOR) AS BEGIN OPEN COLNAME FOR SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME =TNAME; END; / SQL> VARIABLE COLNAME REFCURSOR; SQL> EXEC SP_LIST_COLUMN_NAME('EMPLOYEES',:COLNAME); PL/SQL procedure successfully completed. SQL> PRINT COLNAME; COLUMN_NAME -----------------------------EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL
PHONE_NUMBER HIRE_DATE JOB_ID SALARY COMMISSION_PCT MANAGER_ID DEPARTMENT_ID 11 rows selected. INPUT: COLUMN NAME OUTPUT: LIST TABLE NAMES. WHICH EVER AS THAT COLUMN NAME( SAY IF COLUMN NAME IS SALARY, LIST ALL THE TABLENAME WHICH HAS COLUMN NAME AS SALARY) AS ANONUMOUS BLOCK USING : USER_TAB_COLUMNS DECLARE TNAME VARCHAR2(30); CURSOR C2 IS SELECT TABLE_NAME FROM USER_TAB_COLUMNS WHERE COLUMN_NAME ='SALARY'; BEGIN OPEN C2; LOOP FETCH C2 INTO TNAME; DBMS_OUTPUT.PUT_LINE(TNAME); EXIT WHEN C2%NOTFOUND; END LOOP; CLOSE C2; END; INPUT: COLUMN NAME OUTPUT: LIST TABLE NAMES. WHICH EVER AS THAT COLUMN NAME( SAY IF COLUMN NAME IS SALARY, LIST ALL THE TABLENAME WHICH HAS COLUMN NAME AS SALARY) AS PROCEDURE USING : USER_TAB_COLUMNS ( I HAVE DECLARED COLNAME AS BIND VARIABLE ALREADY FOR ANOTHER PROCEDURE, SO I USED IT RATHER THAN DECLARING AGAIN.) CREATE OR REPLACE PROCEDURE SP_TABLENAME(COLNAME IN VARCHAR2, TNAME OUT SYS_REFCURSOR) AS BEGIN OPEN TNAME FOR SELECT TABLE_NAME FROM USER_TAB_COLUMNS WHERE COLUMN_NAME = COLNAME; END; /
PL/SQL procedure successfully completed. SQL> PRINT COLNAME; TABLE_NAME -----------------------------EMPLOYEES EMP_DETAILS_VIEW RAM EMPLOYEE1 SUB E1 MY_EMPLOYEE V3 V4 EMP_LOAD 10 rows selected. INPUT: TABLE NAME OUTPUT: NO OF COLUMNS IN THE TABLE NAME ( AS ANONYMOUS BLOCK)
DECLARE NUM NUMBER(2); BEGIN SELECT COUNT(COLUMN_ID) INTO NUM FROM USER_TAB_COLUMNS WHERE TABLE_NAME ='BSNL'; DBMS_OUTPUT.PUT_LINE(NUM); END; SQL> @c:\sql\assignment_procedures.sql Procedure created. SQL> EXEC SP_NO_OF_COLUMNS('LOCATIONS',:NUM); SP2-0552: Bind variable "NUM" not declared. SQL> VARIABLE NUM REFCURSOR; SQL> EXEC SP_NO_OF_COLUMNS('LOCATIONS',:NUM); PL/SQL procedure successfully completed. SQL> PRINT NUM; COUNT(COLUMN_ID) ---------------6
INPUT: TABLE NAME, COLUMN NAME OUTPUT: REMOVE THE LETTER e create or replace procedure SP_input( tname in varchar2, colname in varchar2, sub out sys_refcursor) as begin open sub for select replace(first_name,'e',' ') from employees; end; / SQL> exec SP_INPUT('EMPLOYEES','FIRST_NAME',:SUB); PL/SQL procedure successfully completed. SQL> PRINT SUB; REPLACE(FIRST_NAME,' -------------------Ell n Sundar Mozh David H rmann Sh lli Amit Elizab th Sarah David Laura INPUT: employee name OUTPUT: employee id and has to check whether it is even or odd number declare cursor c3 is SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE FIRST_NAME = 'Steven'; a employees.employee_id%type; begin open c3; loop fetch c3 into a; dbms_output.put_line(a); exit when c3%notfound; if mod(a,2)= 0 then dbms_output.put_line('even'); else dbms_output.put_line('odd');
as procedure ( works but doesnt give required result) create or replace procedure sp_mod_id(name in employees.first_name%type, c3 out sys_refcursor) as employee_id number(3); begin open c3 for SELECT EMPLOYEE_ID FROM EMPLOYEES WHERE FIRST_NAME = name; dbms_output.put_line(c3); if mod(employee_id,2)= 0 then dbms_output.put_line('even'); else dbms_output.put_line('odd'); end if; end; / INPUT: TABLE NAME and type of PROCEDURE OUTPUT: No of procedures SQL> CREATE OR REPLACE PROCEDURE SP_COUNT_PROCEDURE_TABLE(EMP IN VARCHAR2, PROC IN VARCHAR2, A OUT NUMBER) 2 AS 3 BEGIN 4 select COUNT(*) INTO A from user_dependencies WHERE REFERENCED_NAME = EMP AND TYPE = PROC; 5 END; 6 / Procedure created. SQL> SQL> EXEC SP_COUNT_PROCEDURE_TABLE('EMPLOYEES','PROCEDURE',A); BEGIN SP_COUNT_PROCEDURE_TABLE('EMPLOYEES','PROCEDURE',A); END; *
SQL> EXEC SP_COUNT_PROCEDURE_TABLE('EMPLOYEES','PROCEDURE',:A); PL/SQL procedure successfully completed. SQL> PRINT A; A ---------11
INPUT: give a number OUTPUT: that particular number has to appear, with the same number of rows. ( say if I give, 2 ,number 2 has to appear in 2 rows, if u give 3 , number 3 has to appear with 3 rows.
SQL> create or replace procedure SP_NUMBER_DISPLAY(M IN NUMBER) 2 AS 3 begin 4 for i in 1..&m loop 5 dbms_output.put_line(m); 6 end loop; 7 end; 8 / Enter value for m: 20 old 4: for i in 1..&m loop new 4: for i in 1..20 loop Procedure created. SQL> execute sp_number_display(20); 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20