Update DBMS/SQL/Week6/writeup.md
This commit is contained in:
parent
a2d50a1f13
commit
90cdaa2a4f
@ -55,14 +55,17 @@ PL/SQL procedure successfully completed.
|
|||||||
### 3. Create a procedure to display accident information which took place in a particular location.
|
### 3. Create a procedure to display accident information which took place in a particular location.
|
||||||
|
|
||||||
```SQL
|
```SQL
|
||||||
SQL> create or replace procedure accident_info(location_value in varchar) IS
|
SQL> CREATE OR REPLACE PROCEDURE accident_info(location_value IN VARCHAR2) IS
|
||||||
begin
|
BEGIN
|
||||||
for accident_rec in
|
FOR accident_rec IN
|
||||||
(select * from accident where location = location_value) loop
|
(SELECT * FROM accident WHERE LOCATION = location_value) LOOP
|
||||||
dbms_output.put_line('Report Number: ' || accident_rec.report_number || ', Date: ' || accident_rec.accd_date || ', Location: ' || accident_rec.location);
|
DBMS_OUTPUT.PUT_LINE('Report Number: ' || accident_rec.REPORT_NUMBER ||
|
||||||
end loop;
|
', Date: ' || TO_CHAR(accident_rec.ACCD_DATE, 'DD-MON-YYYY') ||
|
||||||
end;
|
', Location: ' || accident_rec.LOCATION);
|
||||||
/
|
END LOOP;
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
```
|
```
|
||||||
```sql
|
```sql
|
||||||
SQL> execute accident_info('Delhi India');
|
SQL> execute accident_info('Delhi India');
|
||||||
@ -74,23 +77,22 @@ PL/SQL procedure successfully completed.
|
|||||||
### 4. Create a procedure to identify all drivers who have never been involved in any accidents. The procedure should return their driver-id, name, and address.
|
### 4. Create a procedure to identify all drivers who have never been involved in any accidents. The procedure should return their driver-id, name, and address.
|
||||||
|
|
||||||
```SQL
|
```SQL
|
||||||
SQL> CREATE OR REPLACE PROCEDURE GetDriversWithoutAccidents AS
|
SQL>
|
||||||
begin
|
CREATE OR REPLACE PROCEDURE GetDriversWithoutAccidents AS
|
||||||
for rec in (
|
BEGIN
|
||||||
select p.driver_id#, p.name, p.address
|
FOR rec IN (
|
||||||
from person p
|
SELECT p.driver_id#, p.name, p.address
|
||||||
left join participated pa on p.driver_id# = pa.driver_id#
|
FROM person p
|
||||||
where pa.report_number is null
|
LEFT JOIN participated pa ON p.driver_id# = pa.driver_id#
|
||||||
) loop
|
WHERE pa.report_number IS NULL
|
||||||
dbms_output.put_line('driver id: ' || rec.driver_id# ||
|
) LOOP
|
||||||
|
DBMS_OUTPUT.PUT_LINE('driver id: ' || rec.driver_id# ||
|
||||||
|
', name: ' || rec.name ||
|
||||||
|
', address: ' || rec.address);
|
||||||
|
END LOOP;
|
||||||
|
END;
|
||||||
|
/
|
||||||
|
|
||||||
', name: ' || rec.name ||
|
|
||||||
', address: ' || rec.address);
|
|
||||||
end loop;
|
|
||||||
end;
|
|
||||||
/
|
|
||||||
|
|
||||||
Procedure created.
|
|
||||||
```
|
```
|
||||||
```SQL
|
```SQL
|
||||||
SQL> EXEC GetDriversWithoutAccidents;
|
SQL> EXEC GetDriversWithoutAccidents;
|
||||||
@ -102,25 +104,24 @@ PL/SQL procedure successfully completed.
|
|||||||
|
|
||||||
Q5. Write a function that takes a REGNO as input and returns the total number of accidents in which the car was involved
|
Q5. Write a function that takes a REGNO as input and returns the total number of accidents in which the car was involved
|
||||||
```sql
|
```sql
|
||||||
SQL> create or replace function gettotalaccidentsbyregno(p_regno in varchar2)
|
SQL>
|
||||||
return number
|
CREATE OR REPLACE FUNCTION gettotalaccidentsbyregno(p_regno IN VARCHAR2)
|
||||||
is
|
RETURN NUMBER
|
||||||
v_total_accidents number;
|
IS
|
||||||
begin
|
v_total_accidents NUMBER := 0; -- Initialize to 0
|
||||||
select count(*)
|
BEGIN
|
||||||
into v_total_accidents
|
SELECT COUNT(*)
|
||||||
from participated
|
INTO v_total_accidents
|
||||||
where regno = p_regno;
|
FROM participated
|
||||||
return v_total_accidents;
|
WHERE REGNO = p_regno;
|
||||||
exception
|
|
||||||
when no_data_found then
|
RETURN v_total_accidents;
|
||||||
return 0;
|
EXCEPTION
|
||||||
when others then
|
WHEN OTHERS THEN
|
||||||
raise;
|
RETURN 0; -- Return 0 for any error
|
||||||
end;
|
END;
|
||||||
/
|
/
|
||||||
|
|
||||||
Function created.
|
|
||||||
```
|
```
|
||||||
```SQL
|
```SQL
|
||||||
SQL> SELECT GetTotalAccidentsByRegno('ABCD0001') AS Total_Accidents
|
SQL> SELECT GetTotalAccidentsByRegno('ABCD0001') AS Total_Accidents
|
||||||
|
Loading…
x
Reference in New Issue
Block a user