0% found this document useful (0 votes)
96 views

Practice On SQL

This document provides examples of using SQL queries to: 1. Escape special characters in SQL queries using single and double quotes. 2. Summarize the difference between two SQL queries by assigning a value to a constant. 3. Declare variables and constants outside and inside PL/SQL blocks and access them between blocks.

Uploaded by

onreddy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
96 views

Practice On SQL

This document provides examples of using SQL queries to: 1. Escape special characters in SQL queries using single and double quotes. 2. Summarize the difference between two SQL queries by assigning a value to a constant. 3. Declare variables and constants outside and inside PL/SQL blocks and access them between blocks.

Uploaded by

onreddy
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 15

HOW DOES ONE ESCAPE SPECIAL CHARACTERS

WHEN WRITING SQL QUERIES?


SQL> SELECT 'Frank''s Oracle site' AS text FROM DUAL;
TEXT
--------------------
Franks's Oracle site

SQL> SELECT 'A ''quoted'' word.' AS text FROM DUAL;


TEXT
----------------
A 'quoted' word.

SQL> SELECT 'A ''''double quoted'''' word.' AS text FROM DUAL;


TEXT
-------------------------
A ''double quoted'' word.

Use the 10g Quoting mechanism:

Syntax
q'[QUOTE_CHAR]Text[QUOTE_CHAR]'
Make sure that the QUOTE_CHAR doesnt exist in the text.

SELECT q'{This is Orafaq's 'quoted' text field}' FROM DUAL;

CHECK DIFFERENCE BETWEEN 2 SQL QUERIES

SQL> ED
Wrote file afiedt.buf

1* SELECT 'LAS & DAS' FROM DUAL


SQL> /
Enter value for das: 55
old 1: SELECT 'LAS & DAS' FROM DUAL
new 1: SELECT 'LAS 55' FROM DUAL

'LAS55
------
LAS 55
To extract the rows randomly from table
SELECT * FROM emp SAMPLE(10);

SQL> /

EMPNO ENAME MGR HIREDATE SAL COMM DEPTNO


---------- ---------- ---------- --------- ---------- ---------- ----------
7369 SMITH 7902 17-DEC-80 800 20
7499 ALLEN 7698 20-FEB-81 1600 300 30
7782 CLARKE 7839 09-JUN-81 2450 10
7934 MILLER 7782 23-JAN-82 1300 10
Get the bottom 10 employees based on their salary

SELECT ename, sal


FROM ( SELECT ename, sal, RANK() OVER (ORDER BY sal ASC) sal_rank
FROM emp )
WHERE sal_rank <= 10;

Syntax

You must assign a value to a constant at the time you declare it. If you
do not assign a value to a constant while declaring it and try to assign a
value in the execution section, you will get a error. If you execute the
below Pl/SQL block you will get error.
DECLARE
 salary_increase CONSTANT number(3);
BEGIN
 salary_increase := 100;
dbms_output.put_line (salary_increase);
END;

DECLARE IN THIS MANNER AND EXECUTE U WILL


GET NO ERRORS
DECLARE
 salary_increase CONSTANT number(3):=100;
BEGIN
-- salary_increase := 100; (THIS IS IN COMMENTS)
dbms_output.put_line (salary_increase);
END;
THESE PL/SQL PROGRAMS EXAMPLE FOR IF THEN

SYNTAX: IF…(CONDITION)……THEN (STATEMENTS)

SQL> ED
Wrote file afiedt.buf
1 DECLARE
2 V_NUMB NUMBER:=6;
3 V_OTHER NUMBER:=11;
4 BEGIN

>
5 IF V_NUMB 5 THEN
6 V_NUMB:=5;
7 V_OTHER:=10;
8 DBMS_OUTPUT.PUT_LINE('THE OUT'|| V_NUMB);
9 ELSE
10 DBMS_OUTPUT.PUT_LINE('THE OUT'|| V_OTHER);
11 END IF;
12* END;
SQL> /
THE OUT5

PL/SQL procedure successfully completed.


Implicit cursor example
Explicit Cursor example

declare
salary emp.sal%type;
dno emp.deptno%type;
cursor c1 is select sal,deptno from emp;
begin
open c1;
if c1%isopen then
loop
fetch c1 into salary,dno;
exit when c1%notfound ;
dbms_output.put_line(salary||'----->'||dno);
end loop;
end if;
end;
/
SQL> ed
Wrote file afiedt.buf

1 DECLARE
2 q emp%rowtype;
3 CURSOR c1 IS
4 SELECT * FROM emp WHERE sal > 10;
5 BEGIN
6 OPEN c1;
7 FETCH c1 INTO q;
8 dbms_output.put_line (q.empno || '---> ' || q.deptno);
9 CLOSE c1;
10* END;
SQL> /
7521---> 30

PL/SQL procedure successfully completed.

Practice on sql
SQL> ed
Wrote file afiedt.buf

1 select sal, ename,


2 case when sal < 2000 then 'category 1'
3 when sal < 3000 then 'category 2'
4 when sal < 4000 then 'category 3'
5 else 'category 4'
6 end
7* from emp
SQL> /

SAL ENAME CASEWHENSA


---------- ---------- ----------
800 SMITH category 1
1600 ALLEN category 1
1250 WARD category 1
2975 JONES category 2
1250 MARTIN category 1
2850 BLAKE category 2
2450 CLARKE category 2
3000 SCOTT category 3
5000 KING category 4
1500 TURNER category 1
1100 ADAMS category 1
950 JAMES category 1
3000 FORD category 3
1300 MILLER category 1

14 rows selected.

SQL> ed
Wrote file afiedt.buf

1 select count(1)
2 from emp
3 where (sal+nvl(comm,0))>1000
SQL> /

COUNT(1)
----------
12
TODISPLAY ALL THE TABLES THAT ARE PRESENT WITH IN THE USER

SQL> SELECT * FROM USER_TABLES;

TABLE_NAME TABLESPACE_NAME CLUSTER_NAME


------------------------------ ------------------------------ ----------------------
DEPT USERS
EMP USERS
BONUS USERS
SALGRADE USERS
SSC USERS
CAMPUS_SITE USERS
DIVISION USERS
DEPARTMENT USERS
SEQ_TEST USERS
RR USERS

10 rows selected.

TO DELETE ACOLUMN IN A TABLE


SQL> ED
Wrote file afiedt.buf

1* ALTER TABLE EMP DROP COLUMN JOB


SQL> /

Table altered.

TO DELETE A PRIMARY KEY IN ATABLE

SQL> ALTER TABLE EMP DROP PRIMARY KEY CASCADE;

Table altered.

TO DELETE A FOREIGN KEY IN ATABLE

SQL> ALTER TABLE EMP DROP FOREIGN KEY CASCADE;

Table altered.
TO DECLARE A STRING OUTSIDE A BLOCK AND USE IT INSIDE ABLOCK

SQL> ACCEPT V_STRING PROMPT 'ENTER OUR NAME';


ENTER OUR NAME ONR

SQL> ED
Wrote file afiedt.buf

1 DECLARE V_LINE VARCHAR2(15):='&V_sTRING';


2 BEGIN
3 V_LINE:='HELLO'||V_LINE;
4 DBMS_OUTPUT.PUT_LINE('DIS OUTPUT'||V_LINE);
5* END;
SQL> /
old 1: DECLARE V_LINE VARCHAR2(15):='&V_sTRING';
new 1: DECLARE V_LINE VARCHAR2(15):='ONR';
DIS OUTPUTHELLOONR

PL/SQL procedure successfully completed.

(OR)

SQL> ED
Wrote file afiedt.buf

1 BEGIN
2 DBMS_OUTPUT.PUT_LINE('HELLO &V_STRING');
3* END;
SQL> /
old 2: DBMS_OUTPUT.PUT_LINE('HELLO &V_STRING');
new 2: DBMS_OUTPUT.PUT_LINE('HELLO ONR');
HELLO ONR

PL/SQL procedure successfully completed.


TO ADD 2 NUMBERS BY DECLARING OUTSIDE A METHOD

SQL> ACCEPT V_NUM1 PROMPT "ENTER OKATO NUMBER";


ENTER OKATO NUMBER 4
SQL> ACCEPT V_NUM2 PROMPT "ENTER RONDO NUMBER";
ENTER RONDO NUMBER 5

SQL> ED
Wrote file afiedt.buf

1 DECLARE
2 V_OUT NUMBER:=0;
3 BEGIN
4 V_OUT:=TO_NUMBER('&V_NUM1')
+TO_NUMBER('&V_NUM2');
5 DBMS_OUTPUT.PUT_LINE('THIS IS OUTPUT '|| V_OUT);
6* END;
SQL> /
old 4: V_OUT:=TO_NUMBER('&V_NUM1')
+TO_NUMBER('&V_NUM2');
new 4: V_OUT:=TO_NUMBER('4')+TO_NUMBER('5');
THIS IS OUTPUT 9

PL/SQL procedure successfully completed.


HERE THE “ROW TYPE” INCLUDES ALL THE COLUMNS
LIKE TABLE

WHERE AS “ TYPE” INCLUDES ONLY THE COLUMN THAT IT


HAS BEEN ASSIGNED

SQL> ED
Wrote file afiedt.buf

1 declare
2 employeenumber emp.empno%type;
3 employee emp%rowtype;
4 begin
5 select * into employee from emp
6 where ename='SCOTT';
7 select empno into employeenumber from emp
8 where empno=7839;
9 dbms_output.put_line('this is NAME'||EMPLOYEE.ENAME);
10 dbms_output.put_line('this is NUMBER'||EMPLOYEENUMBER);
11* end;
SQL> /
this is NAMESCOTT
this is NUMBER7839

PL/SQL procedure successfully completed.

COMPARISONS OF STATEMENTS IN ROW TYPE NESTED


DECLARATIONS

SQL> ED
Wrote file afiedt.buf

1 declare
2 EMPLOYNO EMP.EMPNO%TYPE;
3 BEGIN
4 EMPLOYNO:=1234;
5 DECLARE
6 EMPLOYNO EMP.EMPNO%TYPE;
7 BEGIN
8 EMPLOYNO:=7755;
9 DBMS_OUTPUT.PUT_LINE('POLICE'||EMPLOYNO);
10 end;
11 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPLOYNO);
12* END;
SQL> /
POLICE7755
POLICE1111234

PL/SQL procedure successfully completed.

SQL> ED
Wrote file afiedt.buf

1 declare
2 EMPLOYNO EMP.EMPNO%TYPE;
3 BEGIN
4 EMPLOYNO:=1234;
5 DECLARE
6 EMPLOY EMP.EMPNO%TYPE;
7 BEGIN
8 EMPLOY:=7755;
9 DBMS_OUTPUT.PUT_LINE('POLICE'||EMPLOY);
10 end;
11 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPLOYNO);
12* END;
SQL> /
POLICE7755
POLICE1111234

PL/SQL procedure successfully completed.


SQL> ED
Wrote file afiedt.buf

1 declare
2 EMPLOYNO EMP.EMPNO%TYPE;
3 BEGIN
4 EMPLOYNO:=1234;
5 DECLARE
6 EMPLOY EMP.EMPNO%TYPE;
7 BEGIN
8 EMPLOY:=7755;
9 EMPLOYNO:=123;
10 DBMS_OUTPUT.PUT_LINE('POLICE'||EMPLOY);
11 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPLOYNO);
12 end;
13 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPLOYNO);
14* END;
SQL> /
POLICE7755
POLICE111123
POLICE111123

PL/SQL procedure successfully completed.

SQL> ED
Wrote file afiedt.buf

1 declare
2 EMPLOYNO EMP.EMPNO%TYPE;
3 BEGIN
4 EMPLOYNO:=1234;
5 DECLARE
6 EMPLOY EMP.EMPNO%TYPE;
7 BEGIN
8 EMPLOY:=7755;
9 EMPLOYNO:=123;
10 DBMS_OUTPUT.PUT_LINE('POLICE'||EMPLOY);
11 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPLOYNO);
12 end;
13 DBMS_OUTPUT.PUT_LINE('POLICE'||EMPLOY);
14 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPLOYNO);
15* END;
SQL> /
DBMS_OUTPUT.PUT_LINE('POLICE'||EMPLOY);
*
ERROR at line 13:
ORA-06550: line 13, column 32:
PLS-00201: identifier 'EMPLOY' must be declared
ORA-06550: line 13, column 1:
PL/SQL: Statement ignored

SQL> ED
Wrote file afiedt.buf

1 declare
2 EMPO EMP%ROWTYPE;
3 BEGIN
4 EMPO.ENAME:='NARESH';
5 EMPO.EMPNO:=3344;
6 EMPO.SAL:=25000;
7 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPO.ENAME);
8 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPO.EMPNO);
9 DBMS_OUTPUT.PUT_LINE('POLICE111'||EMPO.SAL);
10* END;
SQL> /
POLICE111NARESH
POLICE1113344
POLICE11125000

PL/SQL procedure successfully completed.

You might also like