1. Trang chủ
  2. » Công Nghệ Thông Tin

Tài liệu SQL Clearly Explained- P9 pptx

47 214 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề User-Defined Data Types and Typed Tables in SQL
Trường học Unknown University
Chuyên ngành Database Systems
Thể loại lecture notes
Thành phố Unknown City
Định dạng
Số trang 47
Dung lượng 330,44 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Table B-1: SQLSTATE return codesClass Class definition Subclass Subclass definition 00 Successful completion 000 None 01 Warning 000 None 001 Cursor operation conflict 002 Disconnect err

Trang 1

Dereferencing for Data Access

creates a table with a column that stores a reference to an

in-gredient The SCOPE clause specifies the table or view that is

the source of the reference.

To insert a row into a table with a REF column, you must

include a SELECT in the INSERT statement that locates the

row whose reference is to be stored As you would expect, the

object being referenced must exist in its own table before a

reference to it can be generated We must therefore first insert

an ingredient into the ingredient table:

INSERT INTO ingredient VALUES

(‘Unbleached flour,’ ‘cups’,25);

Then we can insert a referencing row into i ngredient_amount:

INSERT INTO ingredient_amount

(SELECT REF (i) FROM ingredient i

WHERE i.ingredient_name =

‘Unbleached flour’)

VALUES (2.5);

An application program that is using the recipe database as its

data store will need to use the reference stored in the

ingredi-ent_amount table to locate the name of the ingredient The

DEREF function follows a reference back to the table being

referenced and returns data from the appropriate row A query

to retrieve the name and amount of an ingredient used in a

recipe instruction could therefore be written:

Note that the DEREF function accesses an entire row in the

referenced table If you don’t specify otherwise, you will

re-trieve the values from every column in the referenced row To

Trang 2

retrieve just the value of a single column, we use “dot” tion The first portion—

nota-DEREF(related_ingredient)

—actually performs the dereference The portion to the right

of the dot specifies the column in the referenced row.

Some DBMSs provide a dereference operator (->) that can be used in place of the DEREF function The preceding query might be written:

SELECT related_ingredient->ingredient_name, amount FROM ingredient_amount;

The UDTs that we have seen to this point have attributes, but not methods It is certainly possible, however, to declare meth- ods as part of a UDT and then to use SQL programming to define the body of the methods Like classes used by OO pro- gramming languages such C++, SQL the body a method is defined separately from the declaration of the UDT.

You declare a method after declaring the structure of a UDT For example, we could add a method to display the instruc- tions of a recipe with

CREATE TYPE recipe_type AS OBJECT (recipe_name CHAR (256), instruction_list instruction ARRAY[20], numb_servings INT)

NOT INSTANTIABLE, NOT FINAL

METHOD show_instructions ();

This particular method does not return a value and the laration therefore does not include the optional RETURNS clause However, a method to compute the cost of a recipe (if

dec-we dec-were to include ingredient costs in the database) could be declared as

Methods

Trang 3

Methods can accept input parameters within the parentheses

following the method name A method declared as

METHOD scale_recipe (IN numb_servings INT):

accepts an integer value as an input value The parameter list

can also contain output parameters (OUT) and parameters

used for both input and output (INOUT).

As mentioned earlier, although methods are declared when

UDTs tables are declared, the bodies of methods are written

separately To define a method, use the CREATE METHOD

Random programming note: Like the C++ and Java “this,” SQL

methods use SELF to refer to the object to which the method

belongs.

Executing a method uses the “dot” notation used in C++:

typed_table_name.method_name (parameter_list);

Trang 4

Such an expression can be, for example, included in an SERT statement to insert the method’s return value into a column It can also be included in another SQL method, trig- ger, or stored procedure Its return value can then be captured across an assignment operator Output parameters return their values to the calling routine, where they can be used as needed.

Trang 5

ANSI American National Standards Institute

API Application Program (or Programmer) Interface

ASCII American Standard Code for Information Interchange

DBA Database administrator or Database administration

DBMS Database management system

DTD Document type definition

ERD Entity relationship diagram

FK or fk Foreign key

GUI Graphic user interface

HTML Hypertext markup language

and Abbreviations

Trang 6

ISO International Standards Organization JDBC Java Database Connectivity

UDF User-defined function UDT User-defined type; user-defined data type URI Uniform resource identifier

URL Uniform resource locator UML Unified modeling language VARCHAR Character varying

XML Extended (Extensible) Markup Language

Trang 8

Table B-1: SQLSTATE return codes

Class Class definition Subclass Subclass definition

00 Successful completion 000 None

01 Warning 000 None

001 Cursor operation conflict

002 Disconnect error

003 Null value eliminated in set function

004 String data, right truncation

005 Insufficient item descriptor area

006 Privilege not revoked

007 Privilege not granted

008 Implicit zero-bit padding

009 Search expression too long for information

schema00A Query expression too long for information

schema00B Default value too long for information

schema00C Result sets returned00D Additional result sets returned00E Attempt to return too many result sets00F Statement too long for information schema

010 Column cannot be mapped (XML)

011 SQL-Java path too long for information

schema02F Array data, right truncation

02 No data 000 None

001 No additional result sets returned

07 Dynamic SQL error 000 None

001 Using clause does not match dynamic

parameter

002 Using clause does not match target

specifications

Trang 9

003 Cursor specification cannot be executed

004 Using clause required for dynamic

parameters

005 Prepared statement not a cursor

specification

006 Restricted data type attribute violation

007 Using clause required for result fields

008 Invalid descriptor count

009 Invalid descriptor index00B Data type transform function violation00C Undefined DATA value

00D Invalid DATA target00E invalid LEVEL value00F Invalid

DATETIME_INVERTVAL_CODE

08 Connection exception 000 None

001 SQL client unable to establish SQL

connection

002 Connection name in use

003 Connection does not exist

004 SQL server rejected establishment of SQL

connection

006 Connection failure

007 Transaction resolution unknown

09 Triggered action exception 000 None

0A Feature not supported 000 None

001 Multiple server transactions0D Invalid target type specification 000 None

0E Invalid schema name list specification 000 None

0F Locator exception 000 None

001 Invalid specification0K Resignal when handler not active 000 None

0L Invalid grantor 000 None

Trang 10

0M Invalid SQL-invoked procedure

reference 000 None0N SQL/XML mapping error 000 None

001 Unmappable XML name

002 Invalid XML character0P Invalid role specification 000 None

0S Invalid transform group name

specification 000 None0T Target table disagrees with cursor

specification 000 None0U Attempt to assign to non-updatable

column 000 None0V Attempt to assign to ordering column 000 None

0W Prohibited statement encountered

during trigger execution 000 None0X Invalid foreign server specification 000 None

0Y Pass-through specific condition 000 None

001 Invalid cursor option

002 Invalid cursor allocation0Z Diagnostics exception 001 Maximum number of stacked diagnostics

area exceeded

002 Stacked diagnostics accessed without active

hander

10 XQuery error 000 None

20 Case not found for CASE statement 000 None

21 Cardinality violation 000 None

22 Data exception 000 None

001 String data, right truncation

002 Null value, no indicator

003 Numeric value out of range

004 Null value not allowed

005 Error in assignment

006 Invalid interval fomat

007 Invalid datetime format

Trang 11

008 Datetime field overflow

009 Invalid time zone displacement value00B Escape character conflict

00C Invalid use of escape character00D Invalid escape octet

00E Null value in array target00F Zero-length character string00G Most specific type mismatch00H Sequence generator limit exceeded00J Nonidentical notations with the same name

(XML)00K Nonidentical unparsed entities with the

same name (XML)00L Not an XML document00M Invalid XML document00N Invalid XML content00P Interval value out of range00Q Multiset value overflow00R XML value overflow00S Invalid XML comment00T Invalid XML processing instruction00U Not an XQuery document node00V Invalid XQuery context item00W XQuery serialization error

010 Invalid indicator parameter value

011 Substring error

012 Division by zero

015 Interval field overflow

017 Invalid data specified for datalink

018 Invalid character value for cast

019 Invalid escape character

Trang 12

01A Null argument passed to datalink

constructor01B Invalid regular expression01C Null row not permitted in table01D Datalink value exceeds maximum length01E Invalid argument for natural logarithm01F Invalid argument for power function01G Invalid argument for width bucket function01J XQuery sequence cannot be validated01K XQuery document node cannot be

validated01L No XML schema found01M Element namespace not declared01N Global element not declared01P No XML element with the specified

QName01Q No XML element with the specified

namespace01R Validation failure01S invalid XQuery regular expression01T Invalid XQuery option flag01U Attempt to replace a zero-length string01V Invalid XQuery replacement string

021 Character not in repertoire

022 Indicator overflow

023 Invalid parameter value

024 Unterminated C string

025 Invalid escape sequence

026 String data, length mismatch

027 Trim error

029 Noncharacter in UCS string02A Null value in field reference

Trang 13

02D Null value substituted for mutator subject

parameter02E Array element error02F Array data, right truncation02H Invalid sample size

23 Integrity constraints violation 000 None

001 Restrict violation

24 Invalid cursor state 000 None

25 Invalid transaction state 000 None

001 Active SQL transaction

002 Branch transaction already active

003 Inappropriate access mode for branch

008 Held cursor requires same isolation level

26 Invalid SQL statement name 000 None

27 Triggered data change violation 000 None

28 Invalid authorization specification 000 None

2A Syntax error or access rule violation in

direct SQL statement 000 None2B Dependent privilege descriptors still

2C Invalid character set name 000 None

2D Invalid transaction termination 000 None

2E Invalid connection name 000 None

2F SQL routine exception 000 None

002 Modifying SQL data not permitted

003 Prohibited SQL statement attempted

Trang 14

004 Reading SQL data not permitted

005 Function executed but no return statement2H Invalid collation name 000 None

30 Invalid SQL statement identifier 000 None

33 Invalid SQL descriptor name 000 None

34 Invalid cursor name 000 None

35 Invalid condition number 000 None

36 Cursor sensitivity exception 000 None

001 Request rejected

002 Request failed

37 Syntax error or access rule violation in

dynamic SQL statement 000 None

38 External routine exception 000 None

001 Containing SQL not permitted

002 Modifying SQL not permitted

003 Prohibited SQL statement attempted

004 Reading SQL data not permitted

39 External routine invocationexception 000 None

004 Null value not allowed3B Savepoint exception 000 None

001 Invalid specification

002 Too many3C Ambiguous cursor name 000 None

3D Invalid catalog name 000 None

3F Invalid schema name 000 None

40 Transaction rollback 000 None

001 Serialization failure

002 Integrity constraint violation

003 Statement completion unknown

42 Syntax error or access rule violation 000 None

44 With check option violation 000 None

45 Unhandled user defined exception 000 None

46 Java DDL 000 None

Trang 15

001 Invalid URL

002 Invalid JAR name

003 Invalid class deletion

005 Invalid replacement00A Attempt to replace uninstalled JAR00B Attempt to remove uninstalled JAR00C Invalid JAR removal

00D Invalid path00E Self-referencing path

46 Java execution 000 None

102 Invalid JAR name in path

103 Unresolved class name

110 Unsupported feature

120 Invalid class declaration

121 Invalid column name

122 Invalid number of columns

130 Invalid profile state

HV FDW-specific condition 000 None

001 Memory allocation error

002 Dynamic parameter value needed

004 Invalid data type

005 Column name not found

006 Invalid data type descriptors

007 Invalid column name

008 Invalid column number

009 Invalid use of null pointer00A Invalid string format00B Invalid handle00C Invalid option index00D Invalid option name00J Option name not found

Trang 16

00K Reply handle00L Unable to create execution00M Unable to create reply00N Unable to establish connection00P No schemas

00Q Schema not found00R Table not found

010 Function sequence error

014 Limit on number of handles exceeded

021 Inconsistent descriptor information

024 Invalid attribute value

090 Invalid string length or buffer length

091 Invalid descriptor field identifier

HW Datalink exception 000 None

001 External file not linked

002 External file already linked

003 Referenced file does not exist

004 Invalid write token

005 Invalid datalink construction

006 Invalid write permission for update

007 Referenced file not valid

HY CLI-specific condition 000 None

001 Memory allocation error

003 Invalid data type in application descriptor

004 Invalid data type

007 Associated statement is not prepared

008 Operation canceled

009 Invalid use of null pointer

010 Function sequence error

011 Attribute cannot be set now

Trang 17

012 Invalid transaction operation code

013 Memory management error

014 Limit on number of handles exceeded

017 Invalid use of automatically-allocated

descriptor handle

018 Server declined the cancelation request

019 Non-string data cannot be sent in pieces

020 Attempt to concatenate a null value

021 Inconsistent descriptor information

024 Invalid attribute value

055 Non-string data cannot be used with string

routine

090 Invalid string length or buffer length

091 Invalid descriptor field identifier

092 Invalid attribute identifier

093 Invalid datalink value

095 Invalid FunctionID specified

096 Invalid information type

097 Column type out of range

098 Scope out of range

099 Nullable type out of rage

103 Invalid retrieval code

104 Invalid LengthPrecision value

105 Invalid parameter mode

106 Invalid fetch orientation

107 Row value of range

109 Invalid cursor positionC00 Optional feature not implemented

Trang 18

This appendix contains a summary of SQL syntax used throughout this book The first table (Table C.1) describes SQL statements, arranged alphabetically command The no- tation is as follows:

◊ Keywords that must be typed exactly as they appear are

in uppercase characters, such as REFERENCES.

◊ Parts of commands that are determined by the user pear in italics and name the item that must be supplied,

func-Summary

Trang 19

Table C.1: SQL statements

Allocate space for a descriptor area for a dynamic SQL statement

ALLOCATE DESCRIPTOR descriptor_name

[ WITH MAX number_of_parameters ]

Change the specifications of a domain

ALTER DOMAIN domain_name { SET DEFAULT default_value }

| { DROP DEFAULT }

| { ADD constraint_definition_clause } | { DROP CONSTRAINT constraint_name }

Change the specifications of a table

ALTER TABLE table_name { ADD [COLUMN] column_defintion }

| { DROP CONSTRAINT constraint_name RESTRICT | CASCADE }

Declare host language variables for use in an embedded SQL statement

BEGIN DECLARE SECTION

Declarations

END DECLARE SECTION

Close an embedded SQL cursor

{ [ USER user_name

| DEFAULT ] }}

Trang 20

Create an assertion, a constraint that is not attached to a specific table

CREATE ASSERTION assertion_name

CHECK ( check_predicate )

[ { INITIALLY DEFERRED } | { INITIALLY IMMEDIATE } ]

[ DEFERRABLE | { NOT DEFERRABLE } ]

{ [ INITIALLY DEFERRED ] | [ INITIALLY IMMEDIATE ] }

[ DEFERRABLE | { NOT DEFERRABLE } ]

Define a method for a UDT

CREATE METHOD method_name FOR UDT_name

BEGIN

// body of method

END

Create an index

CREATE INDEX index_name ON table_name (index_key_column_list)

Note: Indexes are no longer part of the SQL standard, but are still supported by most relational DBMSs.

CREATE [ [ GLOBAL | LOCAL ] TEMPORARY ] table_name

( { column_name { data_type | domain_name }} [ column_size ]

Trang 21

Create a user-defined data type (UDT)

CREATE TYPE type_name AS [ OBJECT ](column_definitions)

[ INSTANTIABLE | { NOT INSTANTIABLE } ] [ FINAL | { NOT FINAL } ]

[ { METHOD method_name (parameter_list) }, … ]

Create a typed table

CREATE TABLE table_name OF UDT_name [ UNDER supertype_name (added_column_list) ] [ REF IS reference_column_name

( { REF USING existing_data_type } | { REF IS identifier_name SYSTEM GENERATED } | { REF FROM attribute_list } ) ]

Create a database user account and password

CREATE USER | LOGIN implementation_specific_syntax

Note: Creating user accounts is not part of the SQL standard and much of the syntax is tion dependent.

implementa-Create a view

CREATE VIEW view_name [ (column_list ) ]

AS (complete_SELECT_statement

[ WITH [ CASCADED | LOCAL ] CHECK OPTION ])

Remove a dynamic SQL descriptor area from main memory

DEALLOCATE DESCRIPTOR descriptor_name

Declare a cursor for processing an embedded SQL SELECT that returns multiple rows

DECLARE CURSOR cursor_name [ INSENSITIVE ] [ SCROLL ] CURSOR FOR (complete_SELECT_statement)

[ FOR ( { READ ONLY } | UPDATE [ OF column_name, … ] ) ] | prepared_dynamic_SQL_statement_name

Delete rows from a table

DELETE FROM table_name [ { WHERE row_selection_predicate } | { WHERE CURRENT OF cursor_name } ]

Trang 22

Describe the dynamic parameters in a prepared dynamic SQL statement for a descriptor area

DESCRIBE [ INPUT | OUTPUT ]

Prepared_dyamic_SQL_statement_name

USING SQL DESCRIPTOR descriptor_name

Disconnect from a database

DISCONNECT connection_identifier

Remove an assertion from a schema

DROP ASSERTION assertion_name

Remove a domain from a schema

DROP DOMAIN domain_name CASCADE | RESTRICT

Remove an index from a schema

DROP INDEX index_name

Remove a schema from a catalog

DROP SCHEMA schema_name CASCADE | RESTRICT

Remove a table from a schema

DROP TABLE table_name CASCADE | RESTRICT

Remove a view from a schema

DROP VIEW view_name CASCADE | RESTRICT

Execute an embedded SQL statement

EXEC SQL complete_SQL_statement

Execute a prepared dynamic SQL statement

EXECUTE [ GLOBAL | LOCAL ] prepared_dynamic_SQL_statement

Trang 23

Execute a dynamic SQL statement immediately, without a separate preparation step

EXECUTE IMMEDIATE SQL_statement_text_literal_or_variable

Retrieve a row from an open cursor’s result table

FETCH [ NEXT | PRIOR | FIRST | LAST | ABSOLUTE

| { RELATIVE row_number } ] FROM cursor_name

INTO host_language_variable, …

Retrieve information from a dynamic SQL descriptor area

GET DESCRIPTOR descriptor_name { host_language_variable = COUNT | KEY_TYPE | DYNAMIC_FUNCTION |

Grant access rights to other users

GRANT { ALL PRIVILEGES } | SELECT

| DELETE

| INSERT [ (column_name, …) ] | UPDATE [ (column_name, …) ] | REFERENCES { (column_name, …) }

| USAGE

ON { [ TABLE ] table_name } | { DOMAIN domain_name }

TO { user_id, … } | PUBLIC

[ WITH GRANT OPTION ]

Insert new rows into a table

INSERT INTO table_name [ (column_name, …) ] { VALUES (value1, value2, …) } | complete_SELECT_statement

| DEFAULT VALUES

Ngày đăng: 21/01/2014, 19:20

TỪ KHÓA LIÊN QUAN

w