SlideShare una empresa de Scribd logo
1 de 12
Prof. Neeraj Bhargava
Pooja Dixit
Department of Computer Science
School of Engineering & System Science
MDS, University Ajmer, Rajasthan, India
1
 Procedures are named PL/SQL blocks.
 Created/owned by a particular schema
 Privilege to execute a specific procedure can
be granted to or revoked from application
users in order to control data access.
 Requires CREATE PROCEDURE (to create in
your schema) or CREATE ANY PROCEDURE
privilege (to create in other schemas).
2
CREATE [OR REPLACE] PROCEDURE <procedure_name>
(<parameter1_name> <mode> <data type>,
<parameter2_name> <mode> <data type>, ...) {AS|IS}
<Variable declarations>
BEGIN
Executable statements
[EXCEPTION
Exception handlers]
END <optional procedure name>;
 Unique procedure name is required.
 OR REPLACE clause facilitates testing.
 Parameters are optional – enclosed in parentheses
when used.
 AS or IS keyword is used – both work identically.
 Procedure variables are declared prior to the BEGIN
keyword.
 DECLARE keyword is NOT used in named
procedure.
3
 To Compile/Load a procedure use either the “@” symbol
or the START SQL command to compile the file. The
<SQL filename> parameter is the .sql file that contains
the procedure to be compiled.
SQL>@<SQL filename>
SQL>start <SQL filename>
 Filename does not need to be the same as the procedure
name. The .sql file only contains the procedure code.
 Compiled procedure is stored in the database, not the
.sql file.
 Use SHOW ERRORS command if the procedure does not
compile without errors. Use EXECUTE to run procedure.
SQL> show errors;
SQL> EXECUTE Insert_Employee
4
 Both procedures and functions can take parameters.
 Values passed as parameters to a procedure as
arguments in a calling statement are termed actual
parameters.
 The parameters in a procedure declaration are called
formal parameters.
 The values stored in actual parameters are values
passed to the formal parameters – the formal
parameters are like placeholders to store the
incoming values.
 When a procedure completes, the actual parameters
are assigned the values of the formal parameters.
 A formal parameter can have one of three possible
modes: (1) IN, (2), OUT, or (3) IN OUT.
5
 IN – this parameter type is passed to a procedure as a
read-only value that cannot be changed within the
procedure – this is the default mode.
 OUT – this parameter type is write-only, and can only
appear on the left side of an assignment statement in
the procedure – it is assigned an initial value of NULL.
 IN OUT – this parameter type combines both IN and
OUT; a parameter of this mode is passed to a
procedure, and its value can be changed within the
procedure.
 If a procedure raises an exception, the formal
parameter values are not copied back to their
corresponding actual parameters.
6
 Procedures do not allow specifying a
constraint on the parameter data type.
 Example: the following CREATE PROCEDURE
statement is not allowed because of the
specification that constrains the v_Variable
parameter to NUMBER(2). Instead use the
general data type of NUMBER.
/* Invalid constraint on parameter. */
CREATE OR REPLACE PROCEDURE proSample
(v_Variable NUMBER(2), ...)
/* Valid parameter. */
CREATE OR REPLACE PROCEDURE proSample
(v_Variable NUMBER, ...)
7
CREATE OR REPLACE PROCEDURE DisplaySalary IS
-- create local variable with required constraint
temp_Salary NUMBER(10,2);
BEGIN
SELECT Salary INTO temp_Salary FROM Employee
WHERE EmployeeID = '01885';
IF temp_Salary > 15000 THEN
DBMS_OUTPUT.PUT_LINE ('Salary > 15,000.');
ELSE
DBMS_OUTPUT.PUT_LINE ('Salary < 15,000.');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('Employee not found.');
END DisplaySalary;
/
8
SQL> exec DisplaySalary
Salary > 15,000.
PL/SQL procedure successfully completed.
9
CREATE OR REPLACE PROCEDURE DisplaySalary2(p_EmployeeID
IN CHAR, p_Salary OUT NUMBER) IS
v_Salary NUMBER(10,2);
BEGIN
SELECT Salary INTO v_Salary FROM Employee
WHERE EmployeeID = p_EmployeeID;
IF v_Salary > 15000 THEN
DBMS_OUTPUT.PUT_LINE ('Salary > 15,000.');
ELSE
DBMS_OUTPUT.PUT_LINE ('Salary <= 15,000.');
END IF;
p_Salary := v_Salary;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE ('Employee not found.');
END DisplaySalary2;
10
DECLARE
v_SalaryOutput NUMBER := 0;
BEGIN
-- call the procedure
DisplaySalary2('01885', v_SalaryOutput);
-- display value of salary after the call
DBMS_OUTPUT.PUT_LINE ('Actual salary: '
||TO_CHAR(v_SalaryOutput));
END;
/
Salary > 15,000.
Actual salary: 16250
PL/SQL procedure successfully completed.
11
 The SQL statement to drop a procedure
is the straight-forward DROP PROCEDURE
<procedureName> command.
 This is a data definition language (DDL)
command, and so an implicit commit
executes prior to and immediately after
the command.
SQL> DROP PROCEDURE DisplaySalary2;
Procedure dropped.
12

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

View & index in SQL
View & index in SQLView & index in SQL
View & index in SQL
 
SQL Views
SQL ViewsSQL Views
SQL Views
 
Oracle PLSQL Step By Step Guide
Oracle PLSQL Step By Step GuideOracle PLSQL Step By Step Guide
Oracle PLSQL Step By Step Guide
 
04 Handling Exceptions
04 Handling Exceptions04 Handling Exceptions
04 Handling Exceptions
 
Introduction to-sql
Introduction to-sqlIntroduction to-sql
Introduction to-sql
 
Chapter 4 Structured Query Language
Chapter 4 Structured Query LanguageChapter 4 Structured Query Language
Chapter 4 Structured Query Language
 
SQL commands
SQL commandsSQL commands
SQL commands
 
Packages in PL/SQL
Packages in PL/SQLPackages in PL/SQL
Packages in PL/SQL
 
Triggers
TriggersTriggers
Triggers
 
1 - Introduction to PL/SQL
1 - Introduction to PL/SQL1 - Introduction to PL/SQL
1 - Introduction to PL/SQL
 
DATABASE CONSTRAINTS
DATABASE CONSTRAINTSDATABASE CONSTRAINTS
DATABASE CONSTRAINTS
 
SQL - DML and DDL Commands
SQL - DML and DDL CommandsSQL - DML and DDL Commands
SQL - DML and DDL Commands
 
5. stored procedure and functions
5. stored procedure and functions5. stored procedure and functions
5. stored procedure and functions
 
Stored procedure
Stored procedureStored procedure
Stored procedure
 
Oracle: Control Structures
Oracle: Control StructuresOracle: Control Structures
Oracle: Control Structures
 
MySql Triggers Tutorial - The Webs Academy
MySql Triggers Tutorial - The Webs AcademyMySql Triggers Tutorial - The Webs Academy
MySql Triggers Tutorial - The Webs Academy
 
SQL Functions
SQL FunctionsSQL Functions
SQL Functions
 
Introduction to triggers
Introduction to triggersIntroduction to triggers
Introduction to triggers
 
Oracle: PLSQL Introduction
Oracle: PLSQL IntroductionOracle: PLSQL Introduction
Oracle: PLSQL Introduction
 
Exception handling in plsql
Exception handling in plsqlException handling in plsql
Exception handling in plsql
 

Similar a pl/sql Procedure

Intro to tsql unit 14
Intro to tsql   unit 14Intro to tsql   unit 14
Intro to tsql unit 14
Syed Asrarali
 
Subqueries views stored procedures_triggers_transactions
Subqueries views stored procedures_triggers_transactionsSubqueries views stored procedures_triggers_transactions
Subqueries views stored procedures_triggers_transactions
maxpane
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
Anas Mohammed
 

Similar a pl/sql Procedure (20)

Oracle - Program with PL/SQL - Lession 09
Oracle - Program with PL/SQL - Lession 09Oracle - Program with PL/SQL - Lession 09
Oracle - Program with PL/SQL - Lession 09
 
Module04
Module04Module04
Module04
 
Oracle - Program with PL/SQL - Lession 17
Oracle - Program with PL/SQL - Lession 17Oracle - Program with PL/SQL - Lession 17
Oracle - Program with PL/SQL - Lession 17
 
Procedures/functions of rdbms
Procedures/functions of rdbmsProcedures/functions of rdbms
Procedures/functions of rdbms
 
SQL Procedures & Functions
SQL Procedures & FunctionsSQL Procedures & Functions
SQL Procedures & Functions
 
Oracle - Program with PL/SQL - Lession 16
Oracle - Program with PL/SQL - Lession 16Oracle - Program with PL/SQL - Lession 16
Oracle - Program with PL/SQL - Lession 16
 
PLSQL
PLSQLPLSQL
PLSQL
 
Intro to tsql unit 14
Intro to tsql   unit 14Intro to tsql   unit 14
Intro to tsql unit 14
 
Intro to tsql
Intro to tsqlIntro to tsql
Intro to tsql
 
9. DBMS Experiment Laboratory PresentationPPT
9. DBMS Experiment Laboratory PresentationPPT9. DBMS Experiment Laboratory PresentationPPT
9. DBMS Experiment Laboratory PresentationPPT
 
Tony jambu (obscure) tools of the trade for tuning oracle sq ls
Tony jambu   (obscure) tools of the trade for tuning oracle sq lsTony jambu   (obscure) tools of the trade for tuning oracle sq ls
Tony jambu (obscure) tools of the trade for tuning oracle sq ls
 
Oracle: Procedures
Oracle: ProceduresOracle: Procedures
Oracle: Procedures
 
Oracle: Procedures
Oracle: ProceduresOracle: Procedures
Oracle: Procedures
 
Procedure n functions
Procedure n functionsProcedure n functions
Procedure n functions
 
Stored procedures
Stored proceduresStored procedures
Stored procedures
 
SQL Server Stored procedures
SQL Server Stored proceduresSQL Server Stored procedures
SQL Server Stored procedures
 
Subqueries views stored procedures_triggers_transactions
Subqueries views stored procedures_triggers_transactionsSubqueries views stored procedures_triggers_transactions
Subqueries views stored procedures_triggers_transactions
 
Function in PL/SQL
Function in PL/SQLFunction in PL/SQL
Function in PL/SQL
 
Oracle - Program with PL/SQL - Lession 10
Oracle - Program with PL/SQL - Lession 10Oracle - Program with PL/SQL - Lession 10
Oracle - Program with PL/SQL - Lession 10
 
My cool new Slideshow!
My cool new Slideshow!My cool new Slideshow!
My cool new Slideshow!
 

Más de Pooja Dixit

Más de Pooja Dixit (20)

Combinational circuit.pptx
Combinational circuit.pptxCombinational circuit.pptx
Combinational circuit.pptx
 
number system.pptx
number system.pptxnumber system.pptx
number system.pptx
 
Multiplexer.pptx
Multiplexer.pptxMultiplexer.pptx
Multiplexer.pptx
 
Logic Gates.pptx
Logic Gates.pptxLogic Gates.pptx
Logic Gates.pptx
 
K-Map.pptx
K-Map.pptxK-Map.pptx
K-Map.pptx
 
Karnaugh Map Simplification Rules.pptx
Karnaugh Map Simplification Rules.pptxKarnaugh Map Simplification Rules.pptx
Karnaugh Map Simplification Rules.pptx
 
Half Subtractor.pptx
Half Subtractor.pptxHalf Subtractor.pptx
Half Subtractor.pptx
 
Gray Code.pptx
Gray Code.pptxGray Code.pptx
Gray Code.pptx
 
Flip Flop.pptx
Flip Flop.pptxFlip Flop.pptx
Flip Flop.pptx
 
Encoder.pptx
Encoder.pptxEncoder.pptx
Encoder.pptx
 
De-multiplexer.pptx
De-multiplexer.pptxDe-multiplexer.pptx
De-multiplexer.pptx
 
DeMorgan’s Theory.pptx
DeMorgan’s Theory.pptxDeMorgan’s Theory.pptx
DeMorgan’s Theory.pptx
 
Combinational circuit.pptx
Combinational circuit.pptxCombinational circuit.pptx
Combinational circuit.pptx
 
Boolean Algebra.pptx
Boolean Algebra.pptxBoolean Algebra.pptx
Boolean Algebra.pptx
 
Binary Multiplication & Division.pptx
Binary Multiplication & Division.pptxBinary Multiplication & Division.pptx
Binary Multiplication & Division.pptx
 
Binary addition.pptx
Binary addition.pptxBinary addition.pptx
Binary addition.pptx
 
Basics of Computer Organization.pptx
Basics of Computer Organization.pptxBasics of Computer Organization.pptx
Basics of Computer Organization.pptx
 
Decoders
DecodersDecoders
Decoders
 
Three Address code
Three Address code Three Address code
Three Address code
 
Cyrus beck line clipping algorithm
Cyrus beck line clipping algorithmCyrus beck line clipping algorithm
Cyrus beck line clipping algorithm
 

Último

Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
ZurliaSoop
 

Último (20)

This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Application orientated numerical on hev.ppt
Application orientated numerical on hev.pptApplication orientated numerical on hev.ppt
Application orientated numerical on hev.ppt
 
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
80 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÀNH PHỐ HỒ CHÍ MINH NĂ...
 
Micro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdfMicro-Scholarship, What it is, How can it help me.pdf
Micro-Scholarship, What it is, How can it help me.pdf
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
On National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan FellowsOn National Teacher Day, meet the 2024-25 Kenan Fellows
On National Teacher Day, meet the 2024-25 Kenan Fellows
 
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptxOn_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
On_Translating_a_Tamil_Poem_by_A_K_Ramanujan.pptx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
TỔNG ÔN TẬP THI VÀO LỚP 10 MÔN TIẾNG ANH NĂM HỌC 2023 - 2024 CÓ ĐÁP ÁN (NGỮ Â...
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
Beyond_Borders_Understanding_Anime_and_Manga_Fandom_A_Comprehensive_Audience_...
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Graduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - EnglishGraduate Outcomes Presentation Slides - English
Graduate Outcomes Presentation Slides - English
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
How to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptxHow to setup Pycharm environment for Odoo 17.pptx
How to setup Pycharm environment for Odoo 17.pptx
 
FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024FSB Advising Checklist - Orientation 2024
FSB Advising Checklist - Orientation 2024
 

pl/sql Procedure

  • 1. Prof. Neeraj Bhargava Pooja Dixit Department of Computer Science School of Engineering & System Science MDS, University Ajmer, Rajasthan, India 1
  • 2.  Procedures are named PL/SQL blocks.  Created/owned by a particular schema  Privilege to execute a specific procedure can be granted to or revoked from application users in order to control data access.  Requires CREATE PROCEDURE (to create in your schema) or CREATE ANY PROCEDURE privilege (to create in other schemas). 2
  • 3. CREATE [OR REPLACE] PROCEDURE <procedure_name> (<parameter1_name> <mode> <data type>, <parameter2_name> <mode> <data type>, ...) {AS|IS} <Variable declarations> BEGIN Executable statements [EXCEPTION Exception handlers] END <optional procedure name>;  Unique procedure name is required.  OR REPLACE clause facilitates testing.  Parameters are optional – enclosed in parentheses when used.  AS or IS keyword is used – both work identically.  Procedure variables are declared prior to the BEGIN keyword.  DECLARE keyword is NOT used in named procedure. 3
  • 4.  To Compile/Load a procedure use either the “@” symbol or the START SQL command to compile the file. The <SQL filename> parameter is the .sql file that contains the procedure to be compiled. SQL>@<SQL filename> SQL>start <SQL filename>  Filename does not need to be the same as the procedure name. The .sql file only contains the procedure code.  Compiled procedure is stored in the database, not the .sql file.  Use SHOW ERRORS command if the procedure does not compile without errors. Use EXECUTE to run procedure. SQL> show errors; SQL> EXECUTE Insert_Employee 4
  • 5.  Both procedures and functions can take parameters.  Values passed as parameters to a procedure as arguments in a calling statement are termed actual parameters.  The parameters in a procedure declaration are called formal parameters.  The values stored in actual parameters are values passed to the formal parameters – the formal parameters are like placeholders to store the incoming values.  When a procedure completes, the actual parameters are assigned the values of the formal parameters.  A formal parameter can have one of three possible modes: (1) IN, (2), OUT, or (3) IN OUT. 5
  • 6.  IN – this parameter type is passed to a procedure as a read-only value that cannot be changed within the procedure – this is the default mode.  OUT – this parameter type is write-only, and can only appear on the left side of an assignment statement in the procedure – it is assigned an initial value of NULL.  IN OUT – this parameter type combines both IN and OUT; a parameter of this mode is passed to a procedure, and its value can be changed within the procedure.  If a procedure raises an exception, the formal parameter values are not copied back to their corresponding actual parameters. 6
  • 7.  Procedures do not allow specifying a constraint on the parameter data type.  Example: the following CREATE PROCEDURE statement is not allowed because of the specification that constrains the v_Variable parameter to NUMBER(2). Instead use the general data type of NUMBER. /* Invalid constraint on parameter. */ CREATE OR REPLACE PROCEDURE proSample (v_Variable NUMBER(2), ...) /* Valid parameter. */ CREATE OR REPLACE PROCEDURE proSample (v_Variable NUMBER, ...) 7
  • 8. CREATE OR REPLACE PROCEDURE DisplaySalary IS -- create local variable with required constraint temp_Salary NUMBER(10,2); BEGIN SELECT Salary INTO temp_Salary FROM Employee WHERE EmployeeID = '01885'; IF temp_Salary > 15000 THEN DBMS_OUTPUT.PUT_LINE ('Salary > 15,000.'); ELSE DBMS_OUTPUT.PUT_LINE ('Salary < 15,000.'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('Employee not found.'); END DisplaySalary; / 8
  • 9. SQL> exec DisplaySalary Salary > 15,000. PL/SQL procedure successfully completed. 9
  • 10. CREATE OR REPLACE PROCEDURE DisplaySalary2(p_EmployeeID IN CHAR, p_Salary OUT NUMBER) IS v_Salary NUMBER(10,2); BEGIN SELECT Salary INTO v_Salary FROM Employee WHERE EmployeeID = p_EmployeeID; IF v_Salary > 15000 THEN DBMS_OUTPUT.PUT_LINE ('Salary > 15,000.'); ELSE DBMS_OUTPUT.PUT_LINE ('Salary <= 15,000.'); END IF; p_Salary := v_Salary; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE ('Employee not found.'); END DisplaySalary2; 10
  • 11. DECLARE v_SalaryOutput NUMBER := 0; BEGIN -- call the procedure DisplaySalary2('01885', v_SalaryOutput); -- display value of salary after the call DBMS_OUTPUT.PUT_LINE ('Actual salary: ' ||TO_CHAR(v_SalaryOutput)); END; / Salary > 15,000. Actual salary: 16250 PL/SQL procedure successfully completed. 11
  • 12.  The SQL statement to drop a procedure is the straight-forward DROP PROCEDURE <procedureName> command.  This is a data definition language (DDL) command, and so an implicit commit executes prior to and immediately after the command. SQL> DROP PROCEDURE DisplaySalary2; Procedure dropped. 12