Sunteți pe pagina 1din 6

\

CREATE TABLE STUDENTS


(
STUDENT_ID VARCHAR2(30),
NAME VARCHAR2(30)
)
/
INSERT INTO STUDENTS VALUES(new_student_id,'sarath');
/
SELECT * FROM STUDENTS;
/
CREATE SEQUENCE student_id_seq
START WITH 1000
INCREMENT BY 1
/
1. Write a stored function called new_student_id that takes in no parameters
and returns a student.student_id%TYPE.
The value returned will be used when inserting
a new student into the CTA application.
It will be derived by using the formula: student_id_seq.NEXTVAL
/
CREATE OR REPLACE FUNCTION new_student_id
RETURN STUDENTS.STUDENT_ID%TYPE
AS
V STUDENTS.STUDENT_ID%TYPE;
BEGIN
SELECT STUDENT_ID_SEQ.NEXTVAL INTO V
FROM DUAL;
--V:=STUDENT_ID_SEQ.NEXTVAL;
RETURN V;
END;
/
-/
/
2. Write a stored function called zip_does_not_exist that takes
in a zipcode.zip%TYPE and returns a Boolean. The function will return
TRUE if the zipcode passed into it does not exist.
It will return a FALSE if the zipcode exists
/
CREATE TABLE ZIP_code
(
LOCATION_C VARCHAR2(300),
ZIP NUMBER
)
/
INSERT INTO ZIP_COde VALUES('CHENNAI',600011);
/
SELECT * FROM ZIP_COde;
/
CREATE OR REPLACE FUNCTION zip_does_not_exist(K zip_co.zip%TYPE)
RETURN BOOLEAN
IS
Z NUMBER;
BEGIN
SELECT ZIP INTO Z FROM ZIP_COde WHERE ZIP=K;
if Z!=K then
RETURN FALSE;
ELSIF Z=K THEN
RETURN TRUE;
END IF;
END;
/
SELECT zip_does_not_exist(600011) FROM DUAL;
/
begin
if zip_does_not_exist(600011) then
dbms_output.put_line('EXISTS');
else
dbms_output.put_line('not EXISTS');
end if;
end;
/

/
3. Create a new function. For a given instructor,
determine how many sections he or she is teaching.
If the number is greater than or equal to 3,
return a message saying the instructor needs a vacation.
Otherwise, return a message saying how many sections this instructor is teaching.
/
CREATE TABLE T_INSTRR
(
INSTRUCTOR_ID NUMBER,
teaching NUMBER
);
/
SELECT * FROM T_INSTRR;
/
CREATE OR REPLACE FUNCTION FUN_INSTRUCTOR(INSTRUCTOR IN NUMBER)
RETURN VARCHAR2
AS
TE NUMBER;
BEGIN
SELECT TEACHING INTO TE FROM T_INSTRR
WHERE INSTRUCTOR_ID=INSTRUCTOR;
IF TE>3 THEN
RETURN 'NEED A VACATION';
ELSE
RETURN TE;
END IF;
END;
/
SELECT FUN_INSTRR(3)FROM DUAL;
/
1. Write a procedure with no parameters.
The procedure will let you know if the current day is a weekend or a weekday.
Additionally, it will let you know the user name and current time.
It will also let you know how many valid and
invalid procedures are in the database.
/
SELECT * FROM ALL_OBJECTS;
/
CREATE OR REPLACE PROCEDURE PRC_1WEEK
AS
V VARCHAR2(300);
CURSOR CUR_STA IS
SELECT STATUS,COUNT(STATUS) AS COU FROM ALL_OBJECTS WHERE
OBJECT_TYPE=UPPER('PROCEDURE')
GROUP BY STATUS;

V_ST CUR_STA%ROWTYPE;
BEGIN
DBMS_OUTPUT.PUT_LINE('the current day is a weekend or a weekday');
IF TO_CHAR(SYSDATE,'D') =1 OR TO_CHAR(SYSDATE,'D')=7
THEN
DBMS_OUTPUT.PUT_LINE('THE CURRENT DATE WAS A WEEKEND');
ELSE
DBMS_OUTPUT.PUT_LINE('THE CURRENT DATE WAS A WEEK DAYS');
END IF;
DBMS_OUTPUT.PUT_LINE('the user name and current time');
SELECT TO_CHAR(SYSDATE,'HH:MI:SS') INTO V FROM DUAL;
DBMS_OUTPUT.PUT_LINE('USER NAME : '||USER||' CURRENT TIMING : '||V);
DBMS_OUTPUT.PUT_LINE('how many valid and invalid procedures are in the database');
OPEN CUR_STA;
LOOP
FETCH CUR_STA INTO V_ST;
EXIT WHEN CUR_STA%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('STATUS : '||V_ST.STATUS||' COUNT('||V_ST.STATUS||') :'||
V_ST.COU);
END LOOP;
CLOSE CUR_STA;
END;
/
EXEC PRC_1WEEK;
/
2. Write a procedure that takes in a zip code,
city, and state and inserts the values into the ZIPCODE table.
There should be a check to see if the zip code is already in the database.
If it is, an exception will be raised and an error message will be displayed.
Write an anonymous block that uses the procedure and inserts your zip code.
/
CREATE TABLE ZIPCODE
(
ZIP_CODE NUMBER,
CITY VARCHAR2(30),
STATE VARCHAR2(30)
)
/
TRUNCATE TABLE ZIPCODE
/
INSERT INTO ZIPCODE VALUES(600001,'CHENNAI','TAMILNADU');
INSERT INTO ZIPCODE VALUES(600067,'THIRUVALLUR','TAMILNADU');
/
SELECT * FROM ZIPCODE
/
CREATE OR REPLACE PROCEDURE PRC_2ZIP(ZIP_C NUMBER,CIT VARCHAR2,STA VARCHAR2)
AS
CURSOR CUR_ZIP IS
SELECT * FROM ZIPCODE
WHERE ZIP_CODE=ZIP_C;

V_ZIP CUR_ZIP%ROWTYPE;
EXP_AL EXCEPTION;

BEGIN
OPEN CUR_ZIP;
FETCH CUR_ZIP INTO V_ZIP;
IF CUR_ZIP%FOUND THEN
RAISE EXP_AL;
ELSE
INSERT INTO ZIPCODE VALUES(ZIP_C,CIT,STA);
DBMS_OUTPUT.PUT_LINE('THE GIVEN INPUTS WAS INSERTED IN TABLE THROUGH THE PROCEDURE
SUCCESSFULLY');
END IF;
CLOSE CUR_ZIP;
EXCEPTION
WHEN EXP_AL THEN
DBMS_OUTPUT.PUT_LINE('THE GIVEN ZIP CODE WAS ALREAY EXISTS');
END;
/
EXEC PRC_2ZIP(600002,'CHENNAI','TAMILNADU');
/
/
create or replace procedure prc_chek_details
as
day1 varchar2(25);
cursor c1 is select COUNT(*) countt,STATUS from all_objects
where object_type='PROCEDURE'
group by status;
begin
select to_char(SYSDATE,'fmday') into day1 from dual;
DBMS_OUTPUT.PUT_LINE('----------------------------------------------');
if day1 like('%sun%') then
dbms_output.put_line(RPAD(UPPER(DAY1),15)||'WEEKOFF');
else
dbms_output.put_line(RPAD(UPPER(DAY1),15)||'WEEKDAY');
end if;
-- DBMS_OUTPUT.PUT_LINE('----------------------------------------------');
-- dbms_output.put_line(rpad('USER_NAME',15)||user);
-- dbms_output.put_line(rpad('SYSTEM TIEM',15)||systimestamp);
-- dbms_output.put_line('----------------------------------------------');
-- for i in c1 loop
-- dbms_output.put_line(RPAD('PROCEDURE',10)||RPAD(i.status,7)||
LPAD(i.countt,4));
-- end loop;
END;
/
exec prc_chek_details

/
CREATE OR REPLACE TRIGGER FIRE
AFTER INSERT ON T
WHEN TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI:SS') ='17-DEC-2018 11:12:00'
EXECUTE
(PRC_TRIG);
/
SELECT TO_CHAR(SYSDATE,'DD-MON-YYYY HH:MI:SS') FROM DUAL;
/
CREATE TABLE T_TRIG
(
S NUMBER,
K VARCHAR2(300)
)
/
CREATE OR REPLACE PROCEDURE PRC_TRIG
AS
CURSOR CUR_TRIG IS
SELECT * FROM EMPLOYEES;
V_TR CUR_TRIG%ROWTYPE;

BEGIN
OPEN CUR_TRIG;
LOOP
FETCH CUR_TRIG INTO V_TR;
EXIT WHEN CUR_TRIG%NOTFOUND;
INSERT INTO T_TRIG VALUES(V_TR.EMPLOYEE_ID,V_TR.FIRST_NAME);
END LOOP;
CL1OSE CUR_TRIG;
END PRC_TRIG;
/
declare
a number;
begin
DBMS_JOB.SUBMIT(a,'PRC_TRIG;',sysdate,'trunc(sysdate)+1');
end;
/
SELECT * FROM T_TRIG;
/
SELECT TO_CHAR(TO_DATE(&NO,'J'),'JSP')FROM DUAL;
/
SELECT TO_CHAR(TO_DATE(&N,'J'),'DDSPTH')FROM DUAL;
/
Add a procedure to the pkg_student_api package called remove_student.
This procedure accepts a student_id and returns nothing. Based on the student ID
passed
in, it removes the student from the database. If the student does not exist or
there is a
problem removing the student (such as a foreign key constraint violation), then let
the
calling program handle it.
/
CREATE TABLE T_S1
(
ST_ID NUMBER,
DOB DATE,
CONSTRAINT CON_ST_PK PRIMARY KEY(ST_ID)
);
/
INSERT INTO T_S1 VALUES(102,'01-12-2013');
/
CREATE TABLE T_S2
(
ST_ID NUMBER,
SUBJECT VARCHAR2(30),
CONSTRAINT CON_ST_FK FOREIGN KEY(ST_ID)REFERENCES T_S1(ST_ID)
);
/
INSERT INTO T_S2 VALUES(102,'ENGLISH');
/
DELETE FROM T_S2 WHERE ST_ID=102
/
CREATE OR REPLACE PACKAGE PACK_TRI
AS
PROCEDURE PRC_S1(ST NUMBER);
END;
/
CREATE OR REPLACE PACKAGE BODY PACK_TRI
AS
PROCEDURE PRC_S1(ST NUMBER)
AS
CURSOR CUR_AS IS
SELECT S1.ST_ID,S2.ST_ID FROM T_S1 S1 JOIN T_S2 S2 ON(S1.ST_ID=S2.ST_ID) WHERE
S1.ST_ID=ST;
V_S NUMBER;
V_S2 NUMBER;
CON EXCEPTION;
BEGIN
OPEN CUR_AS;
LOOP
FETCH CUR_AS INTO V_S,V_S2;

IF CUR_AS%FOUND THEN
RAISE CON;
ELSIF CUR_AS%ROWCOUNT=0 THEN
--DBMS_OUTPUT.PUT_LINE('DELETED');
DELETE FROM T_S1
WHERE ST_ID=ST;
END IF;
EXIT WHEN CUR_AS%NOTFOUND;
END LOOP;
CLOSE CUR_AS;
EXCEPTION
WHEN CON THEN
--DBMS_OUTPUT.PUT_LINE('DROP THE CHILD TABLE CONSTRAINT FIRST');
EXECUTE
END PRC_S1;
END PACK_TRI;
/
EXEC PACK_TRI.PRC_S1(100);
/
SELECT * FROM T_S1;
/

S-ar putea să vă placă și