49
Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Page 2: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Chapter 10 Outline

Database Programming: Techniques and Issues

Embedded SQL, Dynamic SQL, and SQLJ

Database Programming with Function Calls:

SQL/CLI and JDBC

Database Stored Procedures

and SQL/PSM

Comparing the Three Approaches

Slide 10- 2

Page 3: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Introduction to SQL

Programming Techniques

Database applications

Host language

Java, C/C++/C#, COBOL, or some other

programming language

Data sublanguage

SQL

SQL standards

Continually evolving

Each DBMS vendor may have some variations

from standard

Slide 10- 3

Page 4: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Database Programming: Techniques

and Issues

Interactive interface

SQL commands typed directly into a monitor

Execute file of commands

@<filename>

Application programs or database

applications

Used as canned transactions by the end users

access a database

May have Web interface

Slide 10- 4

Page 5: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Approaches to Database

Programming

1. Embedding database commands in a general-

purpose programming language

Database statements identified by a special prefix

EXEC SQL

Precompiler or preprocessor scans the source

program code

Identify database statements and extract them for

processing by the DBMS

Called embedded SQL

Slide 10- 5

Page 6: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Approaches to Database

Programming (cont’d.)

2. Using a library of database functions

Library of functions available to the host

programming language

Application programming interface (API)

ODBC (Open Data Base Connectivity)

JDBC (Java Data Base Connectivity)

3. Designing a brand-new language

Database programming language designed from

scratch (PL/SQL, SQL/PSM)

First two approaches are more common

Slide 10- 6

Page 7: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Impedance Mismatch

Differences between database model and programming

language model

attribute data types vs. data types of programming

language

Binding for each host programming language

Specifies for each attribute type the compatible

programming language types

Cursor or iterator variable

A query result data structure in programming language

Loop over the tuples in a query result

Slide 10- 7

Page 8: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Typical Sequence of Interaction in

Database Programming

Open a connection to database server

The URL of database server

username, password

Interact with database by submitting queries,

updates, and other database commands

Terminate or close connection to database

Slide 10- 8

Page 9: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Embedded SQL, Dynamic SQL, and

SQLJ

Embedded SQL

C language

SQLJ

Java language

Programming language called host language

Slide 10- 9

Page 10: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Retrieving Single Tuples with

Embedded SQL

EXEC SQL

Prefix

Preprocessor separates embedded SQL

statements from host language code

Terminated by a matching END-EXEC

Or by a semicolon (;)

Shared variables

Used in both the C program and the embedded

SQL statements

Prefixed by a colon (:) in SQL statement

Slide 10- 10

Page 11: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.1 C program variables used in the embedded SQL examples E1 and E2.

Slide 10- 11

Page 12: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Retrieving Single Tuples with

Embedded SQL (cont’d.)

Connecting to the databaseCONNECT TO <server name> AS <connection name>

AUTHORIZATION <user account name and password> ;

Change connection SET CONNECTION <connection name> ;

Terminate connectionDISCONNECT <connection name> ;

Slide 10- 12

Page 13: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Retrieving Single Tuples with

Embedded SQL (cont’d.)

SQLCODE and SQLSTATE communication

variables

Used by DBMS to communicate exception or error

conditions

SQLCODE variable

0 = statement executed successfully

100 = no more data available in query result

< 0 = indicates some error has occurred

Slide 10- 13

Page 14: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Retrieving Single Tuples with

Embedded SQL (cont’d.)

SQLSTATE

String of five characters

‘00000’ = no error or exception

Other values indicate various errors or exceptions

For example, ‘02000’ indicates ‘no more data’

when using SQLSTATE

Slide 10- 14

Page 15: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.2 Program segment E1, a C program segment with embedded SQL.

Slide 10- 15

Page 16: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Retrieving Multiple Tuples with

Embedded SQL Using Cursors

Cursor

Points to a single tuple (row) from result of query

An iterator over the tuples (one tuple at a time)

OPEN CURSOR command

Fetches query result and sets cursor to a position

before first row in result

Becomes current row for cursor

FETCH commands

Moves cursor to next row in result of query

Slide 10- 16

Page 17: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.3 Program segment E2, a C program segment that uses cursors with embedded SQL for update purposes.

Slide 10- 17

Page 18: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Retrieving Multiple Tuples with

Embedded SQL Using Cursors

(cont’d.)

FOR UPDATE OF

List the names of any attributes that will be

updated by the program

Fetch orientation

Added using value: NEXT, PRIOR, FIRST, LAST,

ABSOLUTE i, and RELATIVE i

Slide 10- 18

Page 19: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Specifying Queries at Runtime Using

Dynamic SQL

Dynamic SQL

Execute different SQL queries or updates

dynamically at runtime

Prepares

Executes

No syntax check or other types of checks on the

command are possible at compile time, since the

SQL command is not available until runtime

Dynamic update

Dynamic query

Slide 10- 19

Page 20: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.4 Program segment E3, a C program segment that uses dynamic SQL for updating a table.

Slide 10- 20

Page 21: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Dynamic SQL

Preparing the command generally involves syntax and

other types of checks by the system, as well as

generating the code for executing it.

The reason for separating PREPARE and EXECUTE is

that if the command is to be executed multiple times in a

program, it can be prepared only once

catch any errors after the PREPARE statement

It is possible to combine the PREPARE and EXECUTE

commands into a single statement

Slide 8- 21

Page 22: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

SQLJ: Embedding SQL Commands

in Java

Standard adopted by several vendors for

embedding SQL in Java

Import several class libraries

Default context

An object of type default context

Return by getConnection()

Used for subsequent SQL commands

Uses exceptions for error handling

SQLException is used to return errors or

exception conditions

Slide 10- 21

Page 23: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.5 Importing classes needed for including SQLJ in Java programs in Oracle, and establishing a connection and default context.

Slide 10- 22

Page 24: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.6 Java program variables used in SQLJ examples J1 and J2.

Slide 10- 23

Page 25: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.7 Program segment J1, a Java program segment with SQLJ.

Slide 10- 24

Page 26: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Retrieving Multiple Tuples in SQLJ

Using Iterators

Iterator (similar to Cursor in C)

Object associated with a collection (set or multiset) of

records in a query result

Named iterator

Associated with a query result by listing attribute

names and types in query result

Positional iterator

Lists only attribute types in query result

In both cases, the list should be in the same order as the

attributes that are listed in the SELECT clause of the

query. However, looping over a query result is different for

the two types of iterators.

Slide 10- 25

Page 27: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.8 Program segment J2A, a Java program segment that uses a named iterator to print employee information in a particular department.

Slide 10- 26

Page 28: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.9 Program segment J2B, a Java program segment that uses a positional iterator to print employee information in a particular department.

Slide 10- 27

Page 29: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Database Programming with Function

Calls: SQL/CLI & JDBC

Use of function calls

Dynamic approach for database programming

Query text can be changed without recompiling or

reprocessing the source code

No preprocessor is needed

Library of functions

Also known as application programming interface (API)

Used to access database

Make it easier to access multiple databases within the same

application program

SQL Call Level Interface (SQL/CLI)

Part of SQL standard

Also known as ODBC (Open Database Connectivity)

Slide 10- 28

Page 30: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

SQL/CLI: Using C

as the Host Language

Before using the function calls in SQL/CLI, it is necessary

to install the appropriate library packages (from vendors)

on the database server

To keep track of the information about host program

interactions with the database in runtime, four types of

records are required

Environment record

Track one or more database connections

Set environment information

Connection record

Keeps track of information needed for a particular database

connection

Slide 10- 29

Page 31: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

SQL/CLI: Using C

as the Host Language (cont’d.)

Statement record

Keeps track of the information needed for one SQL statement

Description record

Keeps track of information about tuples or parameters

E.g., a number of attributes and their types in a tuple or the

number and types of parameters in a function call

Handle to the record

C pointer variable makes record accessible to program

Slide 10- 30

Page 32: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Steps in a database program

Including the library of functions (sqlcli.h)

Declaring handle variables (SQLHSTMT, SQLHDBC, SQLHENV,

SQLHDESC, and SQLRETURN)

Environment record (setup an environment record using SQLAllocHandle)

Connecting to the database (return a connection record using

SQLAllocHandle and establish a connection using SQLConnect)

Statement record (setup statement record using SQLAllocHandle)

Preparing an SQL statement and statement parameters (using SQLPrepare)

Binding the statement parameters (using SQLBindParameter)

If there are n parameters in the SQL statement, we should have n SQLBindParameter

function calls, each with a different parameter position (1, 2, … , n)

Executing the statement (using SQLExecute)

Processing the query result (each column in a query result is bound to a

program variable using SQLBindCol)

Retrieving column values (each SQLFetch gets the next tuple and returns its

column values into the bound program variables)

Slide 8- 32

Page 33: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.10 Program segment CLI1, a C program segment with SQL/CLI.

Slide 10- 31

Page 34: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.11 Program segment CLI2, a C program segment that uses SQL/CLI for a query with a collection of tuples in its result.

Slide 10- 32

Page 35: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

JDBC: SQL Function Calls for Java

Programming

JDBC

Java function libraries

Single Java program can connect to several

different databases (i.e., data sources)

Called data sources accessed by the Java

program

JDBC driver (function libraries)

include java.sql.*

Load a JDBC driver explicitly Class.forName("oracle.jdbc.driver.OracleDriver

")

Slide 10- 33

Page 36: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

JDBC programming steps

Import the JDBC class library

Load the JDBC driver

Create appropriate variables

The Connection object

A connection object is created using the getConnection function of the

DriverManager class of JDBC

The Prepared Statement object

Setting the statement parameters

Binding the statement parameters

Depending on the type of the parameter, different functions such as setString,

setInteger, setDouble, and so on are applied to the PreparedStatement object to

set its parameters

If there are n parameters in the SQL statement, we should have n set ... functions,

each with a different parameter position (1, 2, … , n).

Generally, it is advisable to clear all parameters before setting any new values

Executing the SQL statement (executeUpdate and executeQuery)

Processing the ResultSet object

Slide 8- 36

Page 37: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

JDBC: SQL Function Calls for Java

Programming

Connection object

getConnection(urlstring)

jdbc:oracle:<driverType>:<dbaccount>/<password>

getConnection(url, dbaccount, password)

Statement object has two subclasses:

PreparedStatement and CallableStatement

In general, the programmer should use PreparedStatement objects if a

query is to be executed multiple times, since it would be prepared,

checked, and compiled only once, thus saving this cost for the additional

executions of the query

Question mark (?) symbol

Represents a statement parameter

Determined at runtime

ResultSet object

Holds results of query

Slide 10- 34

Page 38: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.12 Program segment JDBC1, a Java program segment with JDBC.

Slide 10- 35

Page 39: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.13 Program segment JDBC2, a Java program segment that uses JDBC for a query with a collection of tuples in its result.

Slide 10- 36

This example illustrates how we

can execute a query directly,

without having to prepare it as

in the previous example.

This technique is preferred for

queries that will be executed only

once, since it is simpler to program

Page 40: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Database Stored Procedures

and SQL/PSM

Stored procedures

Program modules stored by the DBMS at the

database server

Can be functions or procedures

SQL/PSM (SQL/Persistent Stored Modules)

Extensions to SQL

Include general-purpose programming constructs

in SQL

Slide 10- 37

Page 41: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Database Stored Procedures and

Functions

Persistent stored modules

Stored persistently by the DBMS

Useful:

When database program is needed by several

applications

To reduce data transfer and communication cost

between client and server in certain situations

To enhance modeling power provided by views By allowing more complex types of derived data to be made

available to the database users via the stored procedures

Slide 10- 38

Page 42: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Database Stored Procedures and

Functions (cont’d.)

Declaring stored procedures:CREATE PROCEDURE <procedure name> (<parameters>)

<local declarations>

<procedure body> ;

Declaring a function, a return type is necessary, so the

declaration form isCREATE FUNCTION <function name> (<parameters>)

RETURNS <return type>

<local declarations>

<function body> ;

Slide 10- 39

Page 43: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Database Stored Procedures and

Functions (cont’d.)

If the procedure (or function) is written in a general-

purpose programming languageCREATE PROCEDURE <procedure name>(<parameters>)

LANGUAGE <programming language name>

EXTERNAL NAME <file path name>;

Each parameter has parameter type

Parameter type: one of the SQL data types

Parameter mode: IN, OUT, or INOUT

Calling a stored procedure:CALL <procedure or function name> (<argument

list>) ;

If this statement is called from JDBC, it should be assigned to a

statement object of type CallableStatement (see Section 10.3.2)

Slide 10- 40

Page 44: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

SQL/PSM: Extending SQL for

Specifying Persistent Stored Modules

Conditional branching statement:

IF <condition> THEN <statement list>

ELSEIF <condition> THEN <statement list>

...

ELSEIF <condition> THEN <statement list>

ELSE <statement list>

END IF ;

Slide 10- 41

Page 45: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Figure 10.14 Declaring a function in SQL/PSM.

Slide 10- 43

Page 46: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

SQL/PSM (cont’d.)

Constructs for looping

There is also a cursor-based looping structure

The statement list in such a loop is executed once for each tuple in the query result

Loops can have names, and there is a LEAVE <loop name> statement to break a

loop when a condition is satisfied

Slide 10- 42

Page 47: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Comparing the Three Approaches

Embedded SQL Approach

Query text checked for syntax errors and validated

against database schema at compile time

the query text is part of the program source code itself

The main disadvantages are the loss of flexibility in

changing the query at runtime, and the fact that all

changes to queries must go through the whole

recompilation process

For complex applications where queries have to be

generated at runtime

Function call approach more suitable

Slide 10- 44

Page 48: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Comparing the Three Approaches

(cont’d.)

Library of Function Calls Approach

More flexibility

More complex programming

No checking of syntax done at compile time

Database Programming Language Approach

Does not suffer from the impedance mismatch

problem

Programmers must learn a new language

Slide 10- 45

Page 49: Copyright © 2017 Ramez Elmasri and Shamkant B. Navathecliu/courses/db/lectures/Ch10.pdfTitle Chapter 1 Author Elmasri/Navathe Subject Introduction: Databases and Database Users Created

Copyright © 2017 Ramez Elmasri and Shamkant B. Navathe

Summary

Techniques for database programming

Embedded SQL

SQLJ

Function call libraries

SQL/CLI standard

JDBC class library

Stored procedures

SQL/PSM

Slide 10- 46