0% found this document useful (0 votes)
173 views13 pages

Input: Emp Id Output: Firstname, Salary

The document contains several procedures that accept different inputs and return various outputs. Some procedures accept employee IDs or table names as input and return employee details, department names, number of rows, or column names as output. Other procedures perform operations like checking if a number is even/odd, concatenating strings, or returning maximum salaries. The procedures are defined to return output through parameters, bind variables, or ref cursors.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
0% found this document useful (0 votes)
173 views13 pages

Input: Emp Id Output: Firstname, Salary

The document contains several procedures that accept different inputs and return various outputs. Some procedures accept employee IDs or table names as input and return employee details, department names, number of rows, or column names as output. Other procedures perform operations like checking if a number is even/odd, concatenating strings, or returning maximum salaries. The procedures are defined to return output through parameters, bind variables, or ref cursors.
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1/ 13

ASSIGNMENTS IN PROCEDURES INPUT: EMP ID OUTPUT: FIRSTNAME,SALARY create or replace procedure SP_IN_EMPID(id in NUMBER,OUTPUT OUT SYS_REFCURSOR) AS begin OPEN

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);

ODD PL/SQL procedure successfully completed

INPUT: EMPLOYEE_ID OUTPUT: LAST 3 CHARACTERS IN FIRSTNAME ( AS ANONYMOUS BLOCK)

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; /

SQL> EXEC SP_TABLENAME('SALARY',:COLNAME);

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');

end if; end loop; close c3; end;

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> VARIABLE A NUMBER;

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

20 20 20 PL/SQL procedure successfully completed.

You might also like