├── 01_How _to_install_sqlplus_using_instant_client_on_mac
└── readme.MD
├── 02_How_to_install_instant_client_on_Windows
└── readme.MD
├── 03_How_to_download_and_install_oracle_11g_on_Windows
└── readme.MD
├── 04_Providing_a_role_in_oracle_database
├── providing-role.sql
└── readme.MD
├── 05_Creating_temporary_and_permanent_tablespace
├── readme.MD
└── tablespace.sql
├── 06_Creating_user_role_and_a_tablespace
├── create-user-provide-tablespace-resource.sql
└── readme.MD
├── 07_Creating_table_and_sequence
├── readme.MD
└── table-sequence.sql
├── 08_Writing_to_table_with_package_and_procedure
├── customer-handler.pkb
├── customer-handler.pks
└── readme.MD
├── 09_Cursor_Loop_and_Condition
├── DDL.sql
├── cusor-loop-condition.sql
└── readme.MD
├── 10_Procedure
├── Invoking-procedure.sql
├── Procedure.sql
└── readme.MD
├── 11_procedure_and_package
├── package-body.sql
├── package-header.sql
├── query.sql
└── readme.MD
├── 12_RESTful_API_call_using_UTL_HTTP
├── readme.MD
└── rest-request-plsql.sql
├── 13_Generic_way_to_get_data_from_table_using_Colum_name
├── package-body.sql
├── package-header.sql
├── query.sql
├── readme.MD
└── table-script.sql
├── 14_Connection_to_database_using_sqlplus_using_service_name
├── README.MD
└── connection.sql
├── 15_How_to_make_deployment_script_in_oracle
├── insert-package.sql
├── insert1.sql
├── master-deployment.sql
└── readme.MD
├── 16_Function_using_PL_SQL
├── function-call-plsql.sql
├── function-pl-sql.sql
└── readme.MD
├── 17_Schedular_Job_to_call_procedure
├── readme.MD
└── schedular-job.sql
├── 18_Database_link
├── DB-link.sql
└── readme.MD
├── 19_How_to_use_Trigger_in_PLSQL
├── README.MD
├── Trigger-hit-table.sql
├── Trigger.sql
└── Trigger_demo.sql
├── 20_Package_and_procedure_in_PL-SQL_v2
├── Calling-procedure-from-package.sql
├── Oracle-package-body.sql
├── Oracle-package-header.sql
└── readme.MD
├── 21_What_to_do_if_username_and_password_is_lost_in_oracle
└── readme.MD
└── README.md
/01_How _to_install_sqlplus_using_instant_client_on_mac/readme.MD:
--------------------------------------------------------------------------------
1 | # How to install instantclient on mac to connect to Oracle Server ? #
2 | 1. goto : https://www.oracle.com/database/technologies/instant-client/downloads.html
3 | 2. download instant client and unzip it using
4 | unzip "file_name"
5 | 3. ls
6 | 4. ls -a
7 | 5. open .bash_profile
8 | 6. export PATH=/Users/rbhatta/downloads/instantclient_12_1:$PATH
9 |
--------------------------------------------------------------------------------
/02_How_to_install_instant_client_on_Windows/readme.MD:
--------------------------------------------------------------------------------
1 | # How to install instant client on windows to connect to Oracle server ? #
2 | 1. Goto google and search instant client for 64-bits (in my case) or goto https://www.oracle.com/ca-en/database/technologies/instant-client/winx64-64-downloads.html
3 | 2. Unzip and put it inside folder C:\instantclient_19_3
4 | 3. Goto System variables: My PC-> Properties-> Advanced Setting ->Environment Variables ->System Variables
5 | 4. Create new system variables : name= TNS_ADMIN and path=C:\instantclient_19_3
6 | 5. Edit path variable and add %TNS_ADMIN%
--------------------------------------------------------------------------------
/03_How_to_download_and_install_oracle_11g_on_Windows/readme.MD:
--------------------------------------------------------------------------------
1 | # How to download and install oracle 11g on Windows ? #
2 | 1. Goto https://www.oracle.com/database/technologies/112010-win64soft.html or search on google (download oracle 11g database)
3 | 2. Znip both file into single folder
4 | 3. Select desktop class during installation
--------------------------------------------------------------------------------
/04_Providing_a_role_in_oracle_database/providing-role.sql:
--------------------------------------------------------------------------------
1 | -- ============== Grant of roles in oracle database to user ====================
2 | GRANT resource, DBA to oracletest;
3 |
--------------------------------------------------------------------------------
/04_Providing_a_role_in_oracle_database/readme.MD:
--------------------------------------------------------------------------------
1 | # Providing a role in Oracle 11g database #
2 |
3 | ```sql
4 |
5 | GRANT resource, DBA to oracletest;
6 |
7 | ```
8 |
9 | - note oracle test is the username
--------------------------------------------------------------------------------
/05_Creating_temporary_and_permanent_tablespace/readme.MD:
--------------------------------------------------------------------------------
1 | # Creating temporary and permanent tablespace in oracle #
2 | ```sql
3 | -- =============CREATING A PERMANENT TABLESPACE FOR USER===========================
4 | CREATE TABLESPACE RAJ_TABSPACE
5 | DATAFILE 'D:\oracle\oradata\orcl\RAJ_TABSPACE.DAT'
6 | SIZE 10M AUTOEXTEND ON;
7 |
8 | -- ======================CREATING A TEMPORAY TABLESPACE FOR USER====================
9 | CREATE TEMPORARY TABLESPACE RAJ_TABSPACE_TEMP
10 | TEMPFILE 'D:\oracle\oradata\orcl\RAJ_TABSPACE_TEMP.DAT'
11 | SIZE 5M AUTOEXTEND ON;
12 | ```
--------------------------------------------------------------------------------
/05_Creating_temporary_and_permanent_tablespace/tablespace.sql:
--------------------------------------------------------------------------------
1 | -- =============CREATING A PERMANENT TABLESPACE FOR USER===========================
2 | CREATE TABLESPACE RAJ_TABSPACE
3 | DATAFILE 'D:\oracle\oradata\orcl\RAJ_TABSPACE.DAT'
4 | SIZE 10M AUTOEXTEND ON;
5 |
6 | -- ======================CREATING A TEMPORAY TABLESPACE FOR USER====================
7 | CREATE TEMPORARY TABLESPACE RAJ_TABSPACE_TEMP
8 | TEMPFILE 'D:\oracle\oradata\orcl\RAJ_TABSPACE_TEMP.DAT'
9 | SIZE 5M AUTOEXTEND ON;
10 |
--------------------------------------------------------------------------------
/06_Creating_user_role_and_a_tablespace/create-user-provide-tablespace-resource.sql:
--------------------------------------------------------------------------------
1 | create user toad_user identified by toad_user
2 | default tablespace RAJ_TABSPACE
3 | quota unlimited on RAJ_TABSPACE;
4 |
5 |
6 | grant resource, dba to toad_user;
7 |
--------------------------------------------------------------------------------
/06_Creating_user_role_and_a_tablespace/readme.MD:
--------------------------------------------------------------------------------
1 | # Creating a role and tablespace in 11g #
2 | ```sql
3 | create user toad_user identified by toad_user
4 | default tablespace RAJ_TABSPACE
5 | quota unlimited on RAJ_TABSPACE;
6 |
7 |
8 | grant resource, dba to toad_user;
9 |
10 | ```
--------------------------------------------------------------------------------
/07_Creating_table_and_sequence/readme.MD:
--------------------------------------------------------------------------------
1 | # Creating table and sequence in Oracle 11g #
2 | ```sql
3 | -- =====Creating a table
4 | DROP TABLE TOAD_USER.CUSTOMERS CASCADE CONSTRAINTS;
5 | CREATE TABLE TOAD_USER.CUSTOMERS
6 | (
7 | ID NUMBER NOT NULL,
8 | NAME VARCHAR2(200 BYTE) NOT NULL,
9 | DESCRIPTION VARCHAR2(1000 BYTE),
10 | USERNAME VARCHAR2(200 BYTE)
11 | )
12 |
13 | --- ======Creating a sequence
14 | DROP SEQUENCE TOAD_USER.CUSTOMER_SEQ;
15 | CREATE SEQUENCE TOAD_USER.CUSTOMER_SEQ
16 | START WITH 1
17 | MAXVALUE 999999999999999999999999999
18 | MINVALUE 1
19 | NOCYCLE
20 | CACHE 20
21 | NOORDER;
22 |
23 | ```
--------------------------------------------------------------------------------
/07_Creating_table_and_sequence/table-sequence.sql:
--------------------------------------------------------------------------------
1 | -- =====Creating a table
2 | DROP TABLE TOAD_USER.CUSTOMERS CASCADE CONSTRAINTS;
3 | CREATE TABLE TOAD_USER.CUSTOMERS
4 | (
5 | ID NUMBER NOT NULL,
6 | NAME VARCHAR2(200 BYTE) NOT NULL,
7 | DESCRIPTION VARCHAR2(1000 BYTE),
8 | USERNAME VARCHAR2(200 BYTE)
9 | )
10 |
11 | --- ======Creating a sequence
12 | DROP SEQUENCE TOAD_USER.CUSTOMER_SEQ;
13 | CREATE SEQUENCE TOAD_USER.CUSTOMER_SEQ
14 | START WITH 1
15 | MAXVALUE 999999999999999999999999999
16 | MINVALUE 1
17 | NOCYCLE
18 | CACHE 20
19 | NOORDER;
20 |
21 |
--------------------------------------------------------------------------------
/08_Writing_to_table_with_package_and_procedure/customer-handler.pkb:
--------------------------------------------------------------------------------
1 | /* Formatted on 12/5/2019 8:38:20 PM (QP5 v5.354) */
2 | CREATE OR REPLACE PACKAGE BODY TOAD_USER.customer_handler
3 | AS
4 | PROCEDURE signUpCustomer (name IN VARCHAR2,
5 | description IN VARCHAR2,
6 | username IN VARCHAR2)
7 | IS
8 | BEGIN
9 | INSERT INTO TOAD_USER.CUSTOMERS (id,
10 | NAME,
11 | DESCRIPTION,
12 | USERNAME)
13 | VALUES (CUSTOMER_SEQ.NEXTVAL,
14 | name,
15 | description,
16 | username);
17 | END signUpCustomer;
18 | END customer_handler;
19 | /
20 |
--------------------------------------------------------------------------------
/08_Writing_to_table_with_package_and_procedure/customer-handler.pks:
--------------------------------------------------------------------------------
1 | /* Formatted on 12/5/2019 8:35:58 PM (QP5 v5.354) */
2 | CREATE OR REPLACE PACKAGE TOAD_USER.customer_handler
3 | AS
4 | PROCEDURE signUpCustomer (name IN VARCHAR2,
5 | description IN VARCHAR2,
6 | username IN VARCHAR2);
7 | END customer_handler;
8 | /
9 |
--------------------------------------------------------------------------------
/08_Writing_to_table_with_package_and_procedure/readme.MD:
--------------------------------------------------------------------------------
1 | # Creating package and procedure #
2 | # Package Header #
3 | ```sql
4 | /* Formatted on 12/5/2019 8:35:58 PM (QP5 v5.354) */
5 | CREATE OR REPLACE PACKAGE TOAD_USER.customer_handler
6 | AS
7 | PROCEDURE signUpCustomer (name IN VARCHAR2,
8 | description IN VARCHAR2,
9 | username IN VARCHAR2);
10 | END customer_handler;
11 | /
12 |
13 | ```
14 |
15 | # Package Body #
16 | ```sql
17 | /* Formatted on 12/5/2019 8:38:20 PM (QP5 v5.354) */
18 | CREATE OR REPLACE PACKAGE BODY TOAD_USER.customer_handler
19 | AS
20 | PROCEDURE signUpCustomer (name IN VARCHAR2,
21 | description IN VARCHAR2,
22 | username IN VARCHAR2)
23 | IS
24 | BEGIN
25 | INSERT INTO TOAD_USER.CUSTOMERS (id,
26 | NAME,
27 | DESCRIPTION,
28 | USERNAME)
29 | VALUES (CUSTOMER_SEQ.NEXTVAL,
30 | name,
31 | description,
32 | username);
33 | END signUpCustomer;
34 | END customer_handler;
35 | /
36 | ```
37 |
--------------------------------------------------------------------------------
/09_Cursor_Loop_and_Condition/DDL.sql:
--------------------------------------------------------------------------------
1 | ----===================== SCRIPT TO CREATE EMPLOYEES TABLE =================
2 | CREATE TABLE RAJ.EMPLOYEES
3 | (
4 | EMPLOYEE_ID NUMBER(6),
5 | FIRST_NAME VARCHAR2(20 BYTE),
6 | LAST_NAME VARCHAR2(25 BYTE) NOT NULL,
7 | EMAIL VARCHAR2(25 BYTE) NOT NULL,
8 | PHONE_NUMBER VARCHAR2(20 BYTE),
9 | HIRE_DATE DATE NOT NULL,
10 | JOB_ID VARCHAR2(10 BYTE)NOT NULL,
11 | SALARY NUMBER(8,2),
12 | COMMISSION_PCT NUMBER(2,2),
13 | MANAGER_ID NUMBER(6),
14 | DEPARTMENT_ID NUMBER(4)
15 | );
16 |
17 |
18 | ----===================== SCRIPT TO CREATE HISTORY TABLE =================
19 | CREATE TABLE RAJ.JOB_HISTORY
20 | (
21 | EMPLOYEE_ID NUMBER(6) NOT NULL,
22 | START_DATE DATE NOT NULL,
23 | END_DATE DATE NOT NULL,
24 | JOB_ID VARCHAR2(10 BYTE) NOT NULL,
25 | DEPARTMENT_ID NUMBER(4)
26 | )
--------------------------------------------------------------------------------
/09_Cursor_Loop_and_Condition/cusor-loop-condition.sql:
--------------------------------------------------------------------------------
1 | DECLARE
2 | CURSOR EMPLOYEE_CURSOR IS
3 | SELECT EMPLOYEE_ID, SALARY, COMMISSION_PCT, COUNT(START_DATE) JOBCOUNT
4 | FROM EMPLOYEES LEFT OUTER JOIN JOB_HISTORY JH
5 | USING(EMPLOYEE_ID)
6 | GROUP BY EMPLOYEE_ID,SALARY,COMMISSION_PCT
7 | ORDER BY 1;
8 | V_BONUS NUMBER(5);
9 | BEGIN
10 | FOR EMPLOYEE_RECORD IN EMPLOYEE_CURSOR
11 | LOOP
12 | IF EMPLOYEE_RECORD.JOBCOUNT > 0 THEN
13 | V_BONUS := EMPLOYEE_RECORD.SALARY * 0.40;
14 | ELSIF EMPLOYEE_RECORD.COMMISSION_PCT IS NOT NULL THEN
15 | V_BONUS := EMPLOYEE_RECORD.SALARY * 0.25;
16 | ELSE
17 | V_BONUS := EMPLOYEE_RECORD.SALARY * 0.35;
18 | END IF;
19 |
20 | DBMS_OUTPUT.PUT_LINE(EMPLOYEE_RECORD.EMPLOYEE_ID || ' - ' || V_BONUS);
21 | END LOOP;
22 | END;
23 |
--------------------------------------------------------------------------------
/09_Cursor_Loop_and_Condition/readme.MD:
--------------------------------------------------------------------------------
1 | # Data definition language for test #
2 | ```sql
3 | ----===================== SCRIPT TO CREATE EMPLOYEES TABLE =================
4 | CREATE TABLE RAJ.EMPLOYEES
5 | (
6 | EMPLOYEE_ID NUMBER(6),
7 | FIRST_NAME VARCHAR2(20 BYTE),
8 | LAST_NAME VARCHAR2(25 BYTE) NOT NULL,
9 | EMAIL VARCHAR2(25 BYTE) NOT NULL,
10 | PHONE_NUMBER VARCHAR2(20 BYTE),
11 | HIRE_DATE DATE NOT NULL,
12 | JOB_ID VARCHAR2(10 BYTE)NOT NULL,
13 | SALARY NUMBER(8,2),
14 | COMMISSION_PCT NUMBER(2,2),
15 | MANAGER_ID NUMBER(6),
16 | DEPARTMENT_ID NUMBER(4)
17 | );
18 |
19 |
20 | ----===================== SCRIPT TO CREATE HISTORY TABLE =================
21 | CREATE TABLE RAJ.JOB_HISTORY
22 | (
23 | EMPLOYEE_ID NUMBER(6) NOT NULL,
24 | START_DATE DATE NOT NULL,
25 | END_DATE DATE NOT NULL,
26 | JOB_ID VARCHAR2(10 BYTE) NOT NULL,
27 | DEPARTMENT_ID NUMBER(4)
28 | )
29 | ```
30 | # Cusor and loop #
31 | ```sql
32 | DECLARE
33 | CURSOR EMPLOYEE_CURSOR IS
34 | SELECT EMPLOYEE_ID, SALARY, COMMISSION_PCT, COUNT(START_DATE) JOBCOUNT
35 | FROM EMPLOYEES LEFT OUTER JOIN JOB_HISTORY JH
36 | USING(EMPLOYEE_ID)
37 | GROUP BY EMPLOYEE_ID,SALARY,COMMISSION_PCT
38 | ORDER BY 1;
39 | V_BONUS NUMBER(5);
40 | BEGIN
41 | FOR EMPLOYEE_RECORD IN EMPLOYEE_CURSOR
42 | LOOP
43 | IF EMPLOYEE_RECORD.JOBCOUNT > 0 THEN
44 | V_BONUS := EMPLOYEE_RECORD.SALARY * 0.40;
45 | ELSIF EMPLOYEE_RECORD.COMMISSION_PCT IS NOT NULL THEN
46 | V_BONUS := EMPLOYEE_RECORD.SALARY * 0.25;
47 | ELSE
48 | V_BONUS := EMPLOYEE_RECORD.SALARY * 0.35;
49 | END IF;
50 |
51 | DBMS_OUTPUT.PUT_LINE(EMPLOYEE_RECORD.EMPLOYEE_ID || ' - ' || V_BONUS);
52 | END LOOP;
53 | END;
54 | ```
55 |
56 |
--------------------------------------------------------------------------------
/10_Procedure/Invoking-procedure.sql:
--------------------------------------------------------------------------------
1 | /* Formatted on 12/19/2019 10:42:41 PM (QP5 v5.354) */
2 | BEGIN
3 | change_department_manager(100,110);
4 | END;
--------------------------------------------------------------------------------
/10_Procedure/Procedure.sql:
--------------------------------------------------------------------------------
1 | /* Formatted on 12/19/2019 10:39:55 PM (QP5 v5.354) */
2 | CREATE OR REPLACE PROCEDURE change_department_manager (p_deptid IN NUMBER,
3 | p_managerid IN NUMBER)
4 | IS
5 | v_deptid departments.department_id%TYPE;
6 | v_count NUMBER (1);
7 | BEGIN
8 |
9 | SELECT COUNT (*)
10 | INTO v_count
11 | FROM departments
12 | WHERE department_id = p_deptid;
13 |
14 | IF v_count = 0
15 | THEN
16 | raise_application_error (-20100, 'Department not found');
17 | END IF;
18 |
19 |
20 | SELECT department_id
21 | INTO v_deptid
22 | FROM employees
23 | WHERE employee_id = p_managerid;
24 |
25 | IF v_deptid <> p_deptid
26 | THEN
27 | raise_application_error (
28 | -20111,
29 | 'Employee does not belong to department he is supposed to head');
30 | END IF;
31 |
32 |
33 | UPDATE departments
34 | SET manager_id = p_managerid
35 | WHERE department_id = p_deptid;
36 | EXCEPTION
37 | WHEN NO_DATA_FOUND
38 | THEN
39 | raise_application_error (-20110, 'Employee is not found!');
40 | END;
--------------------------------------------------------------------------------
/10_Procedure/readme.MD:
--------------------------------------------------------------------------------
1 | # Procedure in Oracle 11g #
2 | ```sql
3 | /* Formatted on 12/19/2019 10:39:55 PM (QP5 v5.354) */
4 | CREATE OR REPLACE PROCEDURE change_department_manager (p_deptid IN NUMBER,
5 | p_managerid IN NUMBER)
6 | IS
7 | v_deptid departments.department_id%TYPE;
8 | v_count NUMBER (1);
9 | BEGIN
10 |
11 | SELECT COUNT (*)
12 | INTO v_count
13 | FROM departments
14 | WHERE department_id = p_deptid;
15 |
16 | IF v_count = 0
17 | THEN
18 | raise_application_error (-20100, 'Department not found');
19 | END IF;
20 |
21 |
22 | SELECT department_id
23 | INTO v_deptid
24 | FROM employees
25 | WHERE employee_id = p_managerid;
26 |
27 | IF v_deptid <> p_deptid
28 | THEN
29 | raise_application_error (
30 | -20111,
31 | 'Employee does not belong to department he is supposed to head');
32 | END IF;
33 |
34 |
35 | UPDATE departments
36 | SET manager_id = p_managerid
37 | WHERE department_id = p_deptid;
38 | EXCEPTION
39 | WHEN NO_DATA_FOUND
40 | THEN
41 | raise_application_error (-20110, 'Employee is not found!');
42 | END;
43 | ```
44 |
45 | # Invoking procedure in oracle 11g #
46 | ```sql
47 | /* Formatted on 12/19/2019 10:42:41 PM (QP5 v5.354) */
48 | BEGIN
49 | change_department_manager(100,110);
50 | END;
51 | ```
--------------------------------------------------------------------------------
/11_procedure_and_package/package-body.sql:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE BODY PACKAGE2 AS
2 |
3 | PROCEDURE mergeName(fname IN VARCHAR2,
4 | lname IN VARCHAR2,
5 | mergeNAme OUT VARCHAR2)AS
6 | v_fname VARCHAR2(200);
7 | v_lname VARCHAR2(200);
8 | BEGIN
9 | v_fname :=fname;
10 | v_lname :=lname;
11 | mergeName :=v_fname || v_lname;
12 |
13 | END mergeName;
14 |
15 |
16 | PROCEDURE provideNameWithAddress(address IN VARCHAR2,
17 | nameWithAddress OUT VARCHAR2) AS
18 |
19 | v_address VARCHAR2(200);
20 | v_mergeName VARCHAR2(200);
21 | BEGIN
22 |
23 | v_address :=address;
24 | mergeName('Raj','Bhatta',v_mergeName);
25 | nameWithAddress :=v_mergeName || v_address;
26 |
27 | dbms_output.put_line(nameWithAddress);
28 |
29 | END provideNameWithAddress;
30 |
31 |
32 | END PACKAGE2;
--------------------------------------------------------------------------------
/11_procedure_and_package/package-header.sql:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE PACKAGE2 AS
2 |
3 | PROCEDURE mergeName(fname IN VARCHAR2,
4 | lname IN VARCHAR2,
5 | mergeNAme OUT VARCHAR2);
6 |
7 | PROCEDURE provideNameWithAddress(address IN VARCHAR2,
8 | nameWithAddress OUT VARCHAR2);
9 |
10 | END PACKAGE2;
--------------------------------------------------------------------------------
/11_procedure_and_package/query.sql:
--------------------------------------------------------------------------------
1 | DECLARE
2 | nameWithAddress VARCHAR2(200);
3 |
4 | BEGIN
5 |
6 | package2.providenamewithaddress('Ontario, Canada',nameWithAddress);
7 |
8 | dbms_output.put_line(nameWithAddress);
9 |
10 | END;
--------------------------------------------------------------------------------
/11_procedure_and_package/readme.MD:
--------------------------------------------------------------------------------
1 | # Oracle procedure call #
2 | ```sql
3 | DECLARE
4 | nameWithAddress VARCHAR2(200);
5 |
6 | BEGIN
7 |
8 | package2.providenamewithaddress('Ontario, Canada',nameWithAddress);
9 |
10 | dbms_output.put_line(nameWithAddress);
11 |
12 | END;
13 | ```
14 |
15 | # Oracle package body #
16 | ```sql
17 | create or replace PACKAGE BODY PACKAGE2 AS
18 |
19 | PROCEDURE mergeName(fname IN VARCHAR2,
20 | lname IN VARCHAR2,
21 | mergeNAme OUT VARCHAR2)AS
22 | v_fname VARCHAR2(200);
23 | v_lname VARCHAR2(200);
24 | BEGIN
25 | v_fname :=fname;
26 | v_lname :=lname;
27 | mergeName :=v_fname || v_lname;
28 |
29 | END mergeName;
30 |
31 |
32 | PROCEDURE provideNameWithAddress(address IN VARCHAR2,
33 | nameWithAddress OUT VARCHAR2) AS
34 |
35 | v_address VARCHAR2(200);
36 | v_mergeName VARCHAR2(200);
37 | BEGIN
38 |
39 | v_address :=address;
40 | mergeName('Raj','Bhatta',v_mergeName);
41 | nameWithAddress :=v_mergeName || v_address;
42 |
43 | dbms_output.put_line(nameWithAddress);
44 |
45 | END provideNameWithAddress;
46 |
47 |
48 | END PACKAGE2;
49 | ```
50 |
51 | # Oracle package header #
52 | ```sql
53 | create or replace PACKAGE PACKAGE2 AS
54 |
55 | PROCEDURE mergeName(fname IN VARCHAR2,
56 | lname IN VARCHAR2,
57 | mergeNAme OUT VARCHAR2);
58 |
59 | PROCEDURE provideNameWithAddress(address IN VARCHAR2,
60 | nameWithAddress OUT VARCHAR2);
61 |
62 | END PACKAGE2;
63 | ```
--------------------------------------------------------------------------------
/12_RESTful_API_call_using_UTL_HTTP/readme.MD:
--------------------------------------------------------------------------------
1 | # How to make a API call using UTL_HTTP in 11g #
2 | ```sql
3 | create or replace PACKAGE BODY DB_test.package_test AS
4 |
5 | PROCEDURE SENDUSER_TO_SERVER(name in VARCHAR2
6 | ,address in VARCHAR2
7 | ,phone in NUMBER) IS
8 |
9 | req utl_http.req;
10 | res utl_http.resp;
11 | buffer varchar2(4000);
12 | url varchar2(4000);
13 | v_name varchar2(4000);
14 | v_address varchar2(4000);
15 | v_phone NUMBER;
16 | v_requestbody VARCHAR2(5000);
17 |
18 | BEGIN
19 |
20 | url varchar2(4000) := 'http://localhost:8080/springapp/takeuser';
21 | v_name := 'Raj Bhatta';
22 | v_address := '10644 105 St, Edmonton';
23 | v_phone := 4379832323;
24 |
25 | v_requestbody varchar2(4000) := '{"name":"'||v_name||'", "address":"'||v_address||'", "phone":'||v_phone||'}';
26 |
27 | req := utl_http.begin_request(url, 'POST',' HTTP/1.1');
28 | utl_http.set_header(req, 'user-agent', 'mozilla/4.0');
29 | utl_http.set_header(req, 'content-type', 'application/json');
30 | utl_http.set_header(req, 'Content-Length', length(v_requestbody));
31 |
32 | utl_http.write_text(req, content);
33 | res := utl_http.get_response(req);
34 | -- process the response from the HTTP call
35 | begin
36 | loop
37 | utl_http.read_line(res, buffer);
38 | dbms_output.put_line(buffer);
39 | end loop;
40 | utl_http.end_response(res);
41 | exception
42 | when utl_http.end_of_body
43 | then
44 | utl_http.end_response(res);
45 |
46 |
47 | END SENDUSER_TO_SERVER;
48 | END package_test;
49 | ```
--------------------------------------------------------------------------------
/12_RESTful_API_call_using_UTL_HTTP/rest-request-plsql.sql:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE BODY DB_test.package_test AS
2 |
3 | PROCEDURE SENDUSER_TO_SERVER(name in VARCHAR2
4 | ,address in VARCHAR2
5 | ,phone in NUMBER) IS
6 |
7 | req utl_http.req;
8 | res utl_http.resp;
9 | buffer varchar2(4000);
10 | url varchar2(4000);
11 | v_name varchar2(4000);
12 | v_address varchar2(4000);
13 | v_phone NUMBER;
14 | v_requestbody VARCHAR2(5000);
15 |
16 | BEGIN
17 |
18 | url varchar2(4000) := 'http://localhost:8080/springapp/takeuser';
19 | v_name := 'Raj Bhatta';
20 | v_address := '10644 105 St, Edmonton';
21 | v_phone := 4379832323;
22 |
23 | v_requestbody varchar2(4000) := '{"name":"'||v_name||'", "address":"'||v_address||'", "phone":'||v_phone||'}';
24 |
25 | req := utl_http.begin_request(url, 'POST',' HTTP/1.1');
26 | utl_http.set_header(req, 'user-agent', 'mozilla/4.0');
27 | utl_http.set_header(req, 'content-type', 'application/json');
28 | utl_http.set_header(req, 'Content-Length', length(v_requestbody));
29 |
30 | utl_http.write_text(req, content);
31 | res := utl_http.get_response(req);
32 | -- process the response from the HTTP call
33 | begin
34 | loop
35 | utl_http.read_line(res, buffer);
36 | dbms_output.put_line(buffer);
37 | end loop;
38 | utl_http.end_response(res);
39 | exception
40 | when utl_http.end_of_body
41 | then
42 | utl_http.end_response(res);
43 |
44 |
45 | END SENDUSER_TO_SERVER;
46 | END package_test;
47 |
--------------------------------------------------------------------------------
/13_Generic_way_to_get_data_from_table_using_Colum_name/package-body.sql:
--------------------------------------------------------------------------------
1 | CREATE OR REPLACE
2 | PACKAGE BODY READING_TABLE AS
3 |
4 | PROCEDURE READ_FROM_TABLE(COLUMN_NAME IN VARCHAR2,
5 | RETURN_VALUE OUT VARCHAR2) IS
6 |
7 | CURSOR cursor_value IS
8 | SELECT KEYVALUE FROM TBL_TEST where LOWER(KEYNAME)= lower(COLUMN_NAME);
9 |
10 | BEGIN
11 |
12 | OPEN cursor_value;
13 | FETCH cursor_value INTO RETURN_VALUE;
14 | close cursor_value;
15 |
16 | END READ_FROM_TABLE;
17 |
18 |
19 | END READING_TABLE;
--------------------------------------------------------------------------------
/13_Generic_way_to_get_data_from_table_using_Colum_name/package-header.sql:
--------------------------------------------------------------------------------
1 | CREATE OR REPLACE
2 | PACKAGE READING_TABLE AS
3 |
4 | PROCEDURE READ_FROM_TABLE(COLUMN_NAME IN VARCHAR2,
5 | RETURN_VALUE OUT VARCHAR2);
6 |
7 | END READING_TABLE;
--------------------------------------------------------------------------------
/13_Generic_way_to_get_data_from_table_using_Colum_name/query.sql:
--------------------------------------------------------------------------------
1 | DECLARE
2 |
3 | className TBL_TEST.KEYNAME%TYPE;
4 |
5 | BEGIN
6 | READING_TABLE.READ_FROM_TABLE('CLASS_NAME',className);
7 | dbms_output.put_line(className);
8 |
9 | END;
--------------------------------------------------------------------------------
/13_Generic_way_to_get_data_from_table_using_Colum_name/readme.MD:
--------------------------------------------------------------------------------
1 | # Generic way to get data from table using column name #
2 |
3 | ## Query ##
4 | ```sql
5 | DECLARE
6 |
7 | className TBL_TEST.KEYNAME%TYPE;
8 |
9 | BEGIN
10 | READING_TABLE.READ_FROM_TABLE('CLASS_NAME',className);
11 | dbms_output.put_line(className);
12 |
13 | END;
14 | ```
15 |
16 | ## Header ##
17 |
18 | ```sql
19 | CREATE OR REPLACE
20 | PACKAGE READING_TABLE AS
21 |
22 | PROCEDURE READ_FROM_TABLE(COLUMN_NAME IN VARCHAR2,
23 | RETURN_VALUE OUT VARCHAR2);
24 |
25 | END READING_TABLE;
26 | ```
27 |
28 | ## Body ##
29 |
30 | ```sql
31 | CREATE OR REPLACE
32 | PACKAGE BODY READING_TABLE AS
33 |
34 | PROCEDURE READ_FROM_TABLE(COLUMN_NAME IN VARCHAR2,
35 | RETURN_VALUE OUT VARCHAR2) IS
36 |
37 | CURSOR cursor_value IS
38 | SELECT KEYVALUE FROM TBL_TEST where LOWER(KEYNAME)= lower(COLUMN_NAME);
39 |
40 | BEGIN
41 |
42 | OPEN cursor_value;
43 | FETCH cursor_value INTO RETURN_VALUE;
44 | close cursor_value;
45 |
46 | END READ_FROM_TABLE;
47 |
48 |
49 | END READING_TABLE;
50 | ```
--------------------------------------------------------------------------------
/13_Generic_way_to_get_data_from_table_using_Colum_name/table-script.sql:
--------------------------------------------------------------------------------
1 | --------------------------------------------------------
2 | -- File created - Monday-July-22-2019
3 | --------------------------------------------------------
4 | --------------------------------------------------------
5 | -- DDL for Table TBL_TEST
6 | --------------------------------------------------------
7 |
8 | CREATE TABLE "HR"."TBL_TEST"
9 | ( "KEYNAME" VARCHAR2(200 BYTE),
10 | "KEYVALUE" VARCHAR2(200 BYTE)
11 | ) SEGMENT CREATION IMMEDIATE
12 | PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
13 | STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
14 | PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
15 | TABLESPACE "USERS" ;
16 | REM INSERTING into HR.TBL_TEST
17 | SET DEFINE OFF;
18 | Insert into HR.TBL_TEST (KEYNAME,KEYVALUE) values ('CLASS_NAME','sun.jdbc.odbc.JdbcOdbcDriver');
19 | Insert into HR.TBL_TEST (KEYNAME,KEYVALUE) values ('PORT','1521');
20 | Insert into HR.TBL_TEST (KEYNAME,KEYVALUE) values ('DATABASE_NAME','DB_Test');
21 | Insert into HR.TBL_TEST (KEYNAME,KEYVALUE) values ('URL','jdbc:odbc:datasource');
22 |
--------------------------------------------------------------------------------
/14_Connection_to_database_using_sqlplus_using_service_name/README.MD:
--------------------------------------------------------------------------------
1 | # Making connection to oracle 11g using service name #
2 | ```sql
3 | --1. goto command prompt
4 | --2. sqlplus username/password@host:port/service
5 |
6 | ---======= Example =================
7 | sqlplus rajbhatta/rajbhattapwd@app.raj.test.net:1442/springapp.oracle.test
8 |
9 |
10 |
11 | --- ====Setting TNS_ADMIN during session level ========
12 | set tns_admin=c:\temp
13 |
14 |
15 | --- ========== Useful links =========================
16 | https://stackoverflow.com/questions/37711482/how-to-install-oracle-instant-client-on-a-mac
17 | ```
--------------------------------------------------------------------------------
/14_Connection_to_database_using_sqlplus_using_service_name/connection.sql:
--------------------------------------------------------------------------------
1 | --1. goto command prompt
2 | --2. sqlplus username/password@host:port/service
3 |
4 | ---======= Example =================
5 | sqlplus rajbhatta/rajbhattapwd@app.raj.test.net:1442/springapp.oracle.test
6 |
7 |
8 |
9 | --- ====Setting TNS_ADMIN during session level ========
10 | set tns_admin=c:\temp
11 |
12 |
13 | --- ========== Useful links =========================
14 | https://stackoverflow.com/questions/37711482/how-to-install-oracle-instant-client-on-a-mac
15 |
--------------------------------------------------------------------------------
/15_How_to_make_deployment_script_in_oracle/insert-package.sql:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE BODY DB_test.package_test AS
2 |
3 | PROCEDURE displayFirstName(fname in varchar2) IS
4 | BEGIN
5 | dbms_output.put_line('Hi there your first name is ' || fname);
6 | END displayFirstName;
7 |
8 | END package_test;
9 |
--------------------------------------------------------------------------------
/15_How_to_make_deployment_script_in_oracle/insert1.sql:
--------------------------------------------------------------------------------
1 | PROMPT ====================================================
2 | PROMPT start checking already presented information from tbl_INFO
3 | PROMPT ===================================================
4 |
5 | select * from tbl_INFO where name='James';
6 |
7 | PROMPT ====================================================
8 | PROMPT end checking already presented information from tbl_INFO
9 | PROMPT ===================================================
10 |
11 |
12 | PROMPT ====================================================
13 | PROMPT start of insert or update into insert1.sql
14 | PROMPT ===================================================
15 |
16 |
17 | MERGE INTO tbl_INFO TI USING
18 | (SELECT name AS TI_name from DULA) DI
19 | on (TI.name=DI.name)
20 | WHEN NOT MATCHED THEN
21 | INSERT (NAME, PHONE) VAUES ('James', '4372322234234')
22 | WHEN MATCHED THEN
23 | UPDATE set
24 | TI.NAME=DI.NAME,
25 | TI.PHONE=DI.PHONE;
26 |
27 | PROMPT ====================================================
28 | PROMPT end of insert or update into insert1.sql
29 | PROMPT ===================================================
30 |
--------------------------------------------------------------------------------
/15_How_to_make_deployment_script_in_oracle/master-deployment.sql:
--------------------------------------------------------------------------------
1 | -- Date: 2019/8/17
2 | -- Prepared by : Raj Bhatta
3 |
4 | spool deployment_test.log
5 | set define off
6 |
7 | set trimspool on;
8 | set newpage none;
9 | set linesize 1512;
10 | set pagesize 1231;
11 | sset colsep '|';
12 | set serveroutput on;
13 |
14 | PROMPT ====================================================
15 | PROMPT start of insert into tbl_INFO table
16 | PROMPT ===================================================
17 |
18 | @insert1.sql
19 |
20 | PROMPT ====================================================
21 | PROMPT End of insert into tbl_INFO table
22 | PROMPT ===================================================
23 |
24 |
25 | PROMPT ====================================================
26 | PROMPT start of package update
27 | PROMPT ===================================================
28 |
29 | @insert-package.sql
30 |
31 | PROMPT ====================================================
32 | PROMPT End of package update
33 | PROMPT ===================================================
34 |
--------------------------------------------------------------------------------
/15_How_to_make_deployment_script_in_oracle/readme.MD:
--------------------------------------------------------------------------------
1 | ## How to execute script in Sql ##
2 | 1. Goto sqlplus
3 | 2. Goto directory using CD command where you do have file.
4 | 3. @master-deployment.sql
5 |
6 | # Deployment script #
7 | ```sql
8 | Master deployment script
9 |
10 | -- Date: 2019/8/17
11 | -- Prepared by : Raj Bhatta
12 |
13 | spool deployment_test.log
14 | set define off
15 |
16 | set trimspool on;
17 | set newpage none;
18 | set linesize 1512;
19 | set pagesize 1231;
20 | sset colsep '|';
21 | set serveroutput on;
22 |
23 | PROMPT ====================================================
24 | PROMPT start of insert into tbl_INFO table
25 | PROMPT ===================================================
26 |
27 | @insert1.sql
28 |
29 | PROMPT ====================================================
30 | PROMPT End of insert into tbl_INFO table
31 | PROMPT ===================================================
32 |
33 |
34 | PROMPT ====================================================
35 | PROMPT start of package update
36 | PROMPT ===================================================
37 |
38 | @insert-package.sql
39 |
40 | PROMPT ====================================================
41 | PROMPT End of package update
42 | PROMPT ===================================================
43 |
44 | ```
45 |
46 | ```sql
47 | Regression test package
48 |
49 | create or replace PACKAGE BODY DB_test.package_test AS
50 |
51 | PROCEDURE displayFirstName(fname in varchar2) IS
52 | BEGIN
53 | dbms_output.put_line('Hi there your first name is ' || fname);
54 | END displayFirstName;
55 |
56 | END package_test;
57 | ```
58 |
59 | ```sql
60 | Operation script
61 |
62 | PROMPT ====================================================
63 | PROMPT start checking already presented information from tbl_INFO
64 | PROMPT ===================================================
65 |
66 | select * from tbl_INFO where name='br';
67 |
68 | PROMPT ====================================================
69 | PROMPT end checking already presented information from tbl_INFO
70 | PROMPT ===================================================
71 |
72 |
73 | PROMPT ====================================================
74 | PROMPT start of insert or update into insert1.sql
75 | PROMPT ===================================================
76 |
77 |
78 | MERGE INTO tbl_INFO TI USING
79 | (SELECT name AS TI_name from DULA) DI
80 | on (TI.name=DI.name)
81 | WHEN NOT MATCHED THEN
82 | INSERT (NAME, PHONE) VAUES ('br', '4372322234234')
83 | WHEN MATCHED THEN
84 | UPDATE set
85 | TI.NAME=DI.NAME,
86 | TI.PHONE=DI.PHONE;
87 |
88 | PROMPT ====================================================
89 | PROMPT end of insert or update into insert1.sql
90 | PROMPT ===================================================
91 | ```
--------------------------------------------------------------------------------
/16_Function_using_PL_SQL/function-call-plsql.sql:
--------------------------------------------------------------------------------
1 | /* Formatted on 12/19/2019 11:15:35 PM (QP5 v5.354) */
2 | BEGIN
3 | DBMS_OUTPUT.put_line (manager_job_history (20));
4 | END;
--------------------------------------------------------------------------------
/16_Function_using_PL_SQL/function-pl-sql.sql:
--------------------------------------------------------------------------------
1 | /* Formatted on 12/19/2019 11:13:09 PM (QP5 v5.354) */
2 | CREATE OR REPLACE FUNCTION manager_job_history (p_dept NUMBER)
3 | RETURN NUMBER
4 | IS
5 | v_manager departments.manager_id%TYPE;
6 | v_count NUMBER (2);
7 | BEGIN
8 | SELECT manager_id
9 | INTO v_manager
10 | FROM departments
11 | WHERE department_id = p_dept;
12 |
13 | IF v_manager IS NULL
14 | THEN
15 | RETURN NULL;
16 | ELSE
17 | SELECT COUNT (*)
18 | INTO v_count
19 | FROM job_history
20 | WHERE employee_id = v_manager;
21 |
22 | RETURN v_count;
23 | END IF;
24 | EXCEPTION
25 | WHEN NO_DATA_FOUND
26 | THEN
27 | raise_application_error (-20500, 'Department not found');
28 | END;
--------------------------------------------------------------------------------
/16_Function_using_PL_SQL/readme.MD:
--------------------------------------------------------------------------------
1 | # How to use function in 11g #
2 |
3 | ```sql
4 |
5 | Function prototyp
6 |
7 | CREATE OR REPLACE FUNCTION manager_job_history (p_dept NUMBER)
8 | RETURN NUMBER
9 | IS
10 | v_manager departments.manager_id%TYPE;
11 | v_count NUMBER (2);
12 | BEGIN
13 | SELECT manager_id
14 | INTO v_manager
15 | FROM departments
16 | WHERE department_id = p_dept;
17 |
18 | IF v_manager IS NULL
19 | THEN
20 | RETURN NULL;
21 | ELSE
22 | SELECT COUNT (*)
23 | INTO v_count
24 | FROM job_history
25 | WHERE employee_id = v_manager;
26 |
27 | RETURN v_count;
28 | END IF;
29 | EXCEPTION
30 | WHEN NO_DATA_FOUND
31 | THEN
32 | raise_application_error (-20500, 'Department not found');
33 | END;
34 | ```
35 |
36 | ```sql
37 |
38 | Function call
39 |
40 | BEGIN
41 | DBMS_OUTPUT.put_line (manager_job_history (20));
42 | END;
43 | ```
--------------------------------------------------------------------------------
/17_Schedular_Job_to_call_procedure/readme.MD:
--------------------------------------------------------------------------------
1 | # Schedule or job in 11g #
2 | ```sql
3 | BEGIN
4 | SYS.DBMS_SCHEDULER.DROP_JOB
5 | (job_name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB');
6 | END;
7 | /
8 |
9 | BEGIN
10 | SYS.DBMS_SCHEDULER.CREATE_JOB
11 | (
12 | job_name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
13 | ,start_date => TO_TIMESTAMP_TZ('2019/12/19 23:23:32.302000 -07:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
14 | ,repeat_interval => 'FREQ=DAILY;INTERVAL=1'
15 | ,end_date => NULL
16 | ,job_class => 'DEFAULT_JOB_CLASS'
17 | ,job_type => 'PLSQL_BLOCK'
18 | ,job_action => 'RAJ.change_department_manager;'
19 | ,comments => NULL
20 | );
21 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
22 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
23 | ,attribute => 'RESTARTABLE'
24 | ,value => FALSE);
25 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
26 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
27 | ,attribute => 'LOGGING_LEVEL'
28 | ,value => SYS.DBMS_SCHEDULER.LOGGING_OFF);
29 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
30 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
31 | ,attribute => 'MAX_FAILURES');
32 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
33 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
34 | ,attribute => 'MAX_RUNS');
35 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
36 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
37 | ,attribute => 'STOP_ON_WINDOW_CLOSE'
38 | ,value => FALSE);
39 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
40 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
41 | ,attribute => 'JOB_PRIORITY'
42 | ,value => 3);
43 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
44 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
45 | ,attribute => 'SCHEDULE_LIMIT');
46 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
47 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
48 | ,attribute => 'AUTO_DROP'
49 | ,value => TRUE);
50 |
51 | SYS.DBMS_SCHEDULER.ENABLE
52 | (name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB');
53 | END;
54 | /
55 | ```
--------------------------------------------------------------------------------
/17_Schedular_Job_to_call_procedure/schedular-job.sql:
--------------------------------------------------------------------------------
1 | BEGIN
2 | SYS.DBMS_SCHEDULER.DROP_JOB
3 | (job_name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB');
4 | END;
5 | /
6 |
7 | BEGIN
8 | SYS.DBMS_SCHEDULER.CREATE_JOB
9 | (
10 | job_name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
11 | ,start_date => TO_TIMESTAMP_TZ('2019/12/19 23:23:32.302000 -07:00','yyyy/mm/dd hh24:mi:ss.ff tzr')
12 | ,repeat_interval => 'FREQ=DAILY;INTERVAL=1'
13 | ,end_date => NULL
14 | ,job_class => 'DEFAULT_JOB_CLASS'
15 | ,job_type => 'PLSQL_BLOCK'
16 | ,job_action => 'RAJ.change_department_manager;'
17 | ,comments => NULL
18 | );
19 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
20 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
21 | ,attribute => 'RESTARTABLE'
22 | ,value => FALSE);
23 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
24 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
25 | ,attribute => 'LOGGING_LEVEL'
26 | ,value => SYS.DBMS_SCHEDULER.LOGGING_OFF);
27 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
28 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
29 | ,attribute => 'MAX_FAILURES');
30 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
31 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
32 | ,attribute => 'MAX_RUNS');
33 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
34 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
35 | ,attribute => 'STOP_ON_WINDOW_CLOSE'
36 | ,value => FALSE);
37 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
38 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
39 | ,attribute => 'JOB_PRIORITY'
40 | ,value => 3);
41 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE_NULL
42 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
43 | ,attribute => 'SCHEDULE_LIMIT');
44 | SYS.DBMS_SCHEDULER.SET_ATTRIBUTE
45 | ( name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB'
46 | ,attribute => 'AUTO_DROP'
47 | ,value => TRUE);
48 |
49 | SYS.DBMS_SCHEDULER.ENABLE
50 | (name => 'RAJ.CHANGE_DEPARTMENT_MANAGER_JOB');
51 | END;
52 | /
53 |
--------------------------------------------------------------------------------
/18_Database_link/DB-link.sql:
--------------------------------------------------------------------------------
1 | CREATE DATABASE LINK DB_TEST_RAJ_LINK
2 | CONNECT TO RAJ IDENTIFIED BY RAJ123$
3 | USING 'DB_TEST_RAJ';
4 |
5 |
6 | ----===========Sample query to use Database link ==
7 | SELECT * FROM EMPLOYEES@DB_TEST_RAJ_LINK;
--------------------------------------------------------------------------------
/18_Database_link/readme.MD:
--------------------------------------------------------------------------------
1 | # Database link in 11g #
2 |
3 | ## Database link creating query ##
4 | ```sql
5 |
6 | CREATE DATABASE LINK DB_TEST_RAJ_LINK
7 | CONNECT TO RAJ IDENTIFIED BY RAJ123$
8 | USING 'DB_TEST_RAJ';
9 |
10 |
11 | ```
12 |
13 | ## Database link verification query ##
14 | ```sql
15 | SELECT * FROM EMPLOYEES@DB_TEST_RAJ_LINK;
16 | ```
--------------------------------------------------------------------------------
/19_How_to_use_Trigger_in_PLSQL/README.MD:
--------------------------------------------------------------------------------
1 | # How to use trigger #
2 | ```sql
3 |
4 | Trigger
5 |
6 | create or replace trigger trg_salary_check
7 | before update of salary
8 | on employees
9 | for each row
10 | when (old.salary <> new.salary)
11 | begin
12 | if :new.salary < :old.salary then
13 | raise_application_error(-20200,'Salary cannot be decreased');
14 | else
15 | insert into salary_history
16 | values (:new.employee_id, :old.salary, :new.salary,sysdate);
17 | end if;
18 | end;
19 |
20 | ```
21 |
22 | ```sql
23 |
24 | trigger hitting table
25 |
26 | create table salary_history
27 | (
28 | employee_id number(5) references employees on delete cascade,
29 | old_salary number(6),
30 | new_salary number(6),
31 | changedon date,
32 | primary key (employee_id, changedon)
33 | );
34 |
35 | ```
36 |
37 |
38 | ## Trigger demo ##
39 | ```sql
40 |
41 | update employees set salary = salary + 1000
42 | where employee_id = 150
43 |
44 | -------------------
45 | select * from salary_history
46 |
47 | ```
--------------------------------------------------------------------------------
/19_How_to_use_Trigger_in_PLSQL/Trigger-hit-table.sql:
--------------------------------------------------------------------------------
1 | create table salary_history
2 | (
3 | employee_id number(5) references employees on delete cascade,
4 | old_salary number(6),
5 | new_salary number(6),
6 | changedon date,
7 | primary key (employee_id, changedon)
8 | );
--------------------------------------------------------------------------------
/19_How_to_use_Trigger_in_PLSQL/Trigger.sql:
--------------------------------------------------------------------------------
1 | create or replace trigger trg_salary_check
2 | before update of salary
3 | on employees
4 | for each row
5 | when (old.salary <> new.salary)
6 | begin
7 | if :new.salary < :old.salary then
8 | raise_application_error(-20200,'Salary cannot be decreased');
9 | else
10 | insert into salary_history
11 | values (:new.employee_id, :old.salary, :new.salary,sysdate);
12 | end if;
13 | end;
--------------------------------------------------------------------------------
/19_How_to_use_Trigger_in_PLSQL/Trigger_demo.sql:
--------------------------------------------------------------------------------
1 | update employees set salary = salary + 1000
2 | where employee_id = 150
3 |
4 | -------------------
5 | select * from salary_history
--------------------------------------------------------------------------------
/20_Package_and_procedure_in_PL-SQL_v2/Calling-procedure-from-package.sql:
--------------------------------------------------------------------------------
1 | DECLARE
2 | BEGIN
3 | package_test.displayfirstname('Raj Bhatta');
4 | END;
5 | /
6 |
--------------------------------------------------------------------------------
/20_Package_and_procedure_in_PL-SQL_v2/Oracle-package-body.sql:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE BODY package_test AS
2 |
3 | PROCEDURE displayFirstName(fname in varchar2) IS
4 | BEGIN
5 | dbms_output.put_line('Hi there your first name is ' || fname);
6 | END displayFirstName;
7 |
8 | END package_test;
9 |
--------------------------------------------------------------------------------
/20_Package_and_procedure_in_PL-SQL_v2/Oracle-package-header.sql:
--------------------------------------------------------------------------------
1 | create or replace PACKAGE package_test AS
2 |
3 | PROCEDURE displayFirstName(fname in varchar2);
4 |
5 | END package_test;
6 |
--------------------------------------------------------------------------------
/20_Package_and_procedure_in_PL-SQL_v2/readme.MD:
--------------------------------------------------------------------------------
1 | # How to use package and procedure version 2 #
2 | ```sql
3 |
4 | Package HEAD
5 |
6 | create or replace PACKAGE package_test AS
7 |
8 | PROCEDURE displayFirstName(fname in varchar2);
9 |
10 | END package_test;
11 |
12 |
13 | ```
14 |
15 | ```sql
16 |
17 | Pakage Body
18 |
19 | create or replace PACKAGE BODY package_test AS
20 |
21 | PROCEDURE displayFirstName(fname in varchar2) IS
22 | BEGIN
23 | dbms_output.put_line('Hi there your first name is ' || fname);
24 | END displayFirstName;
25 |
26 | END package_test;
27 |
28 | ```
29 |
30 | ```sql
31 |
32 | Invoke procedure from package
33 |
34 | DECLARE
35 | BEGIN
36 | package_test.displayfirstname('Raj Bhatta');
37 | END;
38 | /
39 |
40 | ```
--------------------------------------------------------------------------------
/21_What_to_do_if_username_and_password_is_lost_in_oracle/readme.MD:
--------------------------------------------------------------------------------
1 | # How to unlock user if all users are locaked and you forgot password 11g #
2 | 1. goto command
3 | 2. type sqlplus/nolog
4 | 3. connect sys as sysdba
5 | 4. enter password that you have entered during oracle installation
6 | 5. alter user HR account unlock;
7 | 6. alter user HR identified by HR;
8 | 7. exit
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Table of contents #
2 | 1. How to install sqlplus using instant client on mac -- > Click here
3 |
4 | 2. How to install sqlplus using instant client on Windows -- > Click here
5 |
6 | 3. How to download and install oracle server -- > Click here
7 |
8 | 4. Providing a role in oracle database -- > Click here
9 |
10 | 5. Creating temporary and permanent tablespace -- > Click here
11 |
12 | 6. Creating user role and tablespace -- > Click here
13 |
14 | 7. Creating a table and sequence -- > Click here
15 |
16 | 8. Writing to table with procedure and package -- > Click here
17 |
18 | 9. Cusor and look -- > Click here
19 |
20 | 10. Procedure --> Click here
21 |
22 | 11. Procedure and package -- > Click here
23 |
24 | 12. Restful API call from database -- > Click here
25 |
26 | 13. Generic way to get data from table using column name -- > Click here
27 |
28 | 14. Connection to database using servicename -- > Click here
29 |
30 | 15. Function -- > Click here
31 |
32 | 16. Schedular -- > Click here
33 |
34 | 17. Database link -- > Click here
35 |
36 | 18. How to use trigger -- > Click here
37 |
38 | 19. Package and procedure version 2 -- > Click here
39 |
40 | 21. Techniques to reset password -- > Click here
--------------------------------------------------------------------------------