Professional Documents
Culture Documents
Advancedsql
Advancedsql
Lecture Topics
Tutorial Topic
CS448/648 1
Introduction to Database Management Advanced SQL
EMBEDDED SQL / C
SOURCE
EMBEDDED SQL
PREPROCESSOR
C C
SOURCE LIBRARIES
C
COMPILER
OBJECT OBJECT
CODE CODE
LINKER
EXECUTABLE
CS448/648 2
Introduction to Database Management Advanced SQL
A Simple Example
#include <stdio.h>
EXEC SQL INCLUDE SQLCA;
#include "sqldef.h"
main()
{
db_init( &sqlca );
db_fini( &sqlca );
return( 0 );
error:
printf( "update failed -- sqlcode = %ld\n",
sqlca.sqlcode );
return( -1 );
}
CS448/648 3
Introduction to Database Management Advanced SQL
Ordering on Statements
CS448/648 4
Introduction to Database Management Advanced SQL
Host variables are used to send and receive values from the
database engine.
CS448/648 5
Introduction to Database Management Advanced SQL
CS448/648 6
Introduction to Database Management Advanced SQL
Domain C Type
FLOAT float v;
char v[ ];
BIT( )
DECL BINARY( ) v;
CS448/648 7
Introduction to Database Management Advanced SQL
Domain C Type
CS448/648 8
Introduction to Database Management Advanced SQL
Two forms
CS448/648 9
Introduction to Database Management Advanced SQL
EXEC SQL
SELECT Surname INTO :name
FROM admin.student
WHERE studnum = :studnum;
CS448/648 10
Introduction to Database Management Advanced SQL
Indicator Variables
EXEC SQL
SELECT Address INTO :address :addind
FROM admin.student
WHERE studnum = :studnum;
CS448/648 11
Introduction to Database Management Advanced SQL
CS448/648 12
Introduction to Database Management Advanced SQL
Cursor Positioning
n-1 -2
n -1
n+1 AFTER LAST TUPLE
CS448/648 13
Introduction to Database Management Advanced SQL
Possible locations
NEXT
PRIOR
FIRST
LAST
ABSOLUTE
RELATIVE
CS448/648 14
Introduction to Database Management Advanced SQL
Must be used when tables, columns or predicates are not known when
the application is written.
Example applications
CS448/648 15
Introduction to Database Management Advanced SQL
CS448/648 16
Introduction to Database Management Advanced SQL
CS448/648 17
Introduction to Database Management Advanced SQL
If the number and type of host variables is not known, then a dynamic
descriptor area is needed.
More commands
ALLOCATE DESCRIPTOR
DESCRIBE
GET DESCRIPTOR
SET DESCRIPTOR
CS448/648 18
Introduction to Database Management Advanced SQL
COUNT:
(item 1) (item 2)
TYPE: TYPE:
LENGTH: LENGTH:
NAME: NAME:
INDICATOR: INDICATOR:
DATA: DATA:
CS448/648 19
Introduction to Database Management Advanced SQL
CS448/648 20
Introduction to Database Management Advanced SQL
CS448/648 21
Introduction to Database Management Advanced SQL
CS448/648 22
Introduction to Database Management Advanced SQL
CS448/648 23
Introduction to Database Management Advanced SQL
1. Environments
2. Connections
3. Statements
CS448/648 24
Introduction to Database Management Advanced SQL
For environments
For connections
CS448/648 25
Introduction to Database Management Advanced SQL
For statements
CS448/648 26
Introduction to Database Management Advanced SQL
SQLAllocEnv( &env );
SQLAllocConnect( env, &dbc );
SQLConnect( dbc, "Sample", SQL_NTS,
"admin", SQL_NTS, "school", SQL_NTS );
SQLSetConnectOption( dbc, SQL_AUTOCOMMIT, FALSE );
SQLAllocStmt( dbc, &stmt );
SQLExecDirect( stmt,
"delete from mark where studnum = 86004", SQL_NTS );
CS448/648 27
Introduction to Database Management Advanced SQL
for( ;; ) {
retcode = SQLFetch( stmt );
if( retcode == SQL_NO_DATA_FOUND ) break;
printf( "Student: %n, surname: %s\n", num, name );
}
CS448/648 28
Introduction to Database Management Advanced SQL
Security in SQL
Ex. “Add a benefits group to the database with access to the employee
table.”
CS448/648 29
Introduction to Database Management Advanced SQL
Ex. “Create a new user called George, password xyz, with the
authority to execute SQL DDL statements.”
CS448/648 30
Introduction to Database Management Advanced SQL
UPDATE column-name-list
(may update indicated columns of existing tuples in named table or
view)
REFERENCES
(may create a foreign key constraints to named table)
CS448/648 31
Introduction to Database Management Advanced SQL
Changes in SQL2
CS448/648 32