Introduction to PL/SQL - Drexel CCI

Introduction to PL/SQL - Drexel CCI

Agenda Summary of last class Loops Simple Loops WHILE Loops FOR Loops Records Cursors 1 Records

User-defined composite types Provides a way to treat separate but logically related variables as a unit Similar to structures in C Use the dot notation to refer to fields within a record v_StudentInfo.FirstName := John; In order to copy one record to another record, both records must be of the same record type 2 Records

Syntax: DECLARE TYPE t_StudentRecord IS RECORD( Student_ID NUMBER(5), FirstName VARCHAR2(20), LastName VARCHAR2(20) ); v_StudentInfo t_StudentRecord; BEGIN -- Process data here EXCEPTION -- Error handling would go here END; / Use the dot notation to refer to fields within a record. Example: v_StudentInfo.FirstName := John; 3

Records To declare a record with the same structure (i.e. fields & field types) as a database row, use %ROWTYPE Syntax: NOTE: Any NOT NULL constraints that are defined for a DECLARE column within the table will v_StudentInfo student%ROWTYPE; not be applicable to the declared record when BEGIN %ROWTYPE is used. -- Process data here EXCEPTION -- Error handling would go here END; /

4 Cursors A pointer to the context area Context area contains: Number of rows processed by the statement A pointer to the parsed representation of the statement In the case of a query, the set of rows returned by the query (i.e. the active set, active recordset) Follows standard declaration and scoping Naming Convention: c_CursorName Cursor Types:

Explicit: user-defined Implicit: system-defined 5 Explicit Cursors To use explicit cursors Declare the cursor Open the cursor Fetch the results into PL/SQL variables Close the cursor 6 Declaring Cursors DECLARE v_StudentID v_FirstName v_LastName

students.id%TYPE; students.first_name%TYPE; students.last_name%TYPE; CURSOR c_HistoryStudents IS SELECT id, first_name, last_name FROM students WHERE major = History; BEGIN -- open cursor, fetch records & then close cursor here END; / 7 OPEN Cursor DECLARE v_StudentID students.id%TYPE; v_FirstName students.first_name%TYPE; v_LastName students.last_name%TYPE; CURSOR c_HistoryStudents IS SELECT id, first_name, last_name FROM students WHERE major = History; BEGIN OPEN c_HistoryStudents; -- fetch records & then close cursor here

END; / 8 FETCH Records DECLARE v_StudentID v_FirstName v_LastName students.id%TYPE; students.first_name%TYPE; students.last_name%TYPE; CURSOR c_HistoryStudents IS SELECT id, first_name, last_name FROM students WHERE major = History; BEGIN OPEN c_HistoryStudents; LOOP FETCH c_HistoryStudents INTO v_StudentID, v_FirstName, v_LastName; EXIT WHEN c_HistoryStudents%NOTFOUND; -- do something with the values that are now in the variables END LOOP -- close cursor here END;/

9 Close Cursor DECLARE v_StudentID v_FirstName v_LastName students.id%TYPE; students.first_name%TYPE; students.last_name%TYPE; CURSOR c_HistoryStudents IS SELECT id, first_name, last_name FROM students WHERE major = History; BEGIN OPEN c_HistoryStudents; LOOP FETCH c_HistoryStudents INTO v_StudentID, v_FirstName, v_LastName; DBMS_OUTPUT.PUT_LINE(v_StudentID, v_FirstName, v_LastName); EXIT WHEN c_HistoryStudents%NOTFOUND; -- do something with the values that are now stored in the variables END LOOP CLOSE c_HistoryStudents; END; /

10 Cursor Attributes Cursors have four attributes %FOUND %NOTFOUND TRUE if the previous FETCH did NOT return a row Otherwise, FALSE %ISOPEN

TRUE if the previous FETCH returned a row Otherwise, FALSE TRUE if the cursor is open, Otherwise, FALSE %ROWCOUNT Returns the # of rows that have been fetched by the cursor so far 11 Cursor Fetch Loop: WHILE Loop DECLARE CURSOR c_HistoryStudents IS SELECT id, first_name, last_name FROM students WHERE major = 'History'; v_StudentData c_HistoryStudents%ROWTYPE; BEGIN OPEN c_HistoryStudents; FETCH c_HistoryStudents INTO v_StudentData; WHILE c_HistoryStudents%FOUND LOOP

INSERT INTO registered_students (student_id, department, course) VALUES (v_StudentData.ID, 'HIS', 301); INSERT INTO temp_table (num_col, char_col) VALUES (v_StudentData.ID, v_StudentData.first_name || ' ' || v_StudentData.last_name); FETCH c_HistoryStudents INTO v_StudentData; END LOOP; CLOSE c_HistoryStudents; END;/ 12 Take Home Exercise #1 Write an anonymous PL/SQL block that Defines a cursor that points to a record set that contains the sailors names, reservation date and

boat id where the boat color is red Opens the cursor Uses a simple loop to fetch each record in the active set Displays each last name, reservation date and boat id for each record to the output screen Schema Sailor (sid, sname, rating, age) Boat (bid, bname, color) Reservation(sid, bid, day) 13 Cursor with Bind Variable(s) DECLARE v_StudentID students.id%TYPE; v_FirstName students.first_name%TYPE; v_LastName students.last_name%TYPE; v_Major students.major%TYPE; CURSOR c_HistoryStudents IS SELECT id, first_name, last_name FROM students WHERE major = v_Major; BEGIN v_Major := History; OPEN c_HistoryStudents; LOOP

FETCH c_HistoryStudents INTO v_StudentID, v_FirstName, v_LastName; EXIT WHEN c_HistoryStudents%NOTFOUND; -- do something with the values that are now stored in the variables END LOOP CLOSE c_HistoryStudents; END; / 14 Bind Variables What are bind variables? Variables that are referenced in the cursor declaration They must be declared BEFORE the cursor is declared i.e. variable must be declared before it can be used The values of bind variables are examined

ONLY when the cursor is opened (at run time) 15 Explicit Cursors with Bind Variables To use explicit cursors with bind variables Declare bind variables Then declare the cursor Assign values to bind variables Open the cursor Fetch the results into PL/SQL variables Close the cursor 16 Take Home Exercise #2

Modify your answer for Class Exercise #1 such that It uses bind variables for color of boat instead of hard-coding the values in the WHERE clause The FETCH is done inside of a WHILE loop instead of inside of a simple loop. 17 Implicit Cursors Used for INSERT, UPDATE, DELETE and SELECTINTO queries

In SQL%NOTFOUND, SQL is called the implicit cursor PL/SQL opens & closes implicit cursors, which is also called SQL cursor You dont declare the implicit cursor If the WHERE clause fails For SELECTINTO statement, then NO_DATA_FOUND error is raised instead of SQL%NOTFOUND For UPDATEs and DELETEs, SQL%NOTFOUND is set to TRUE 18 Example of Implicit Cursor BEGIN UPDATE rooms SET number_seats = 100 WHERE room_id = 99980; -- If the previous UPDATE statement didn't match any rows, -- insert a new row into the rooms table. IF SQL%NOTFOUND THEN INSERT INTO rooms (room_id, number_seats) VALUES (99980, 100); END IF;

END; / 19 Example of Implicit Cursor BEGIN UPDATE rooms SET number_seats = 100 WHERE room_id = 99980; -- If the previous UPDATE statement didn't match any rows, -- insert a new row into the rooms table. IF SQL%ROWCOUNT = 0 THEN INSERT INTO rooms (room_id, number_seats) VALUES (99980, 100); END IF; END; 20 -- Example of SELECTINTO and NO_DATA_FOUND set serveroutput on DECLARE -- Record to hold room information. v_RoomData rooms%ROWTYPE; BEGIN -- Retrieve information about room ID -1.

SELECT * INTO v_RoomData FROM rooms WHERE room_id = -1; -- The following statement will never be executed, since -- control passes immediately to the exception handler. IF SQL%NOTFOUND THEN DBMS_OUTPUT.PUT_LINE('SQL%NOTFOUND is true!'); END IF; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('NO_DATA_FOUND raised!'); END; / 21 SHOW ERRORS To display error message SQL> SHOW ERRORS; 22 Summary of last class

Cursors A pointer to the context area (active set) Name begins with c_ Defined within the DECLARE section Types: Explicit vs. Implicit Explicit: (1) Declare, (2) Open, (3) Fetch & (4) Close Bind variables Variables that are referenced in the cursor declaration Must be defined BEFORE the cursor Values examined ONLY at run time CURSOR c_HistoryStudents IS

SELECT id, first_name, last_name FROM students WHERE major = History; 23 Take Home Exercise #1 Sailor DECLARE sid sname rating age 22 Dustin 7 45.0 CURSOR c_Reservations IS 29 Brutus 1 33.0 SELECT s.sname, r.day, r.bid 31 Lubber 8 55.5 32 Andy 8 25.5

FROM Sailor S, Reserve R, Boat B 58 Rusty 10 35.0 WHERE R.sid = s.sid 64 Horatio 7 35.0 AND R.bid = b.bid 71 Zorba 10 16.0 74 Horatio 9 35.0 AND B.color = red; 85 Art 3 25.5 v_Reservation c_Reservations%ROWTYPE; 95 Bob 3

63.5 BEGIN OPEN c_Reservations; LOOP FETCH c_Reservations INTO v_Reservation; EXIT WHEN c_Reservations%NOTFOUND; DBMS_OUTPUT.PUT_LINE(v_Reservation.sname|| ||v_Reservation.day|| v_Reservation.bid); END LOOP; CLOSE c_Reservations; END;/ Boat bid 101 102 103 104 bname Interlake Interlake Clipper Marine Reserve sid

bid 22 101 22 102 22 103 22 104 31 102 31 103 31 104 64 101 64 102 74 103 color blue red green red

day 10/10/98 10/10/98 10/8/98 10/7/98 11/10/98 11/6/98 11/12/98 9/5/98 9/8/98 9/8/98 24 Cursor Attributes Cursors have four attributes %FOUND

%NOTFOUND TRUE if the previous FETCH did NOT return a row Otherwise, FALSE %ISOPEN TRUE if the previous FETCH returned a row Otherwise, FALSE TRUE if the cursor is open, Otherwise, FALSE %ROWCOUNT Returns the # of rows that have been fetched by the cursor so far 25

Implicit Cursors Used for INSERT, UPDATE, DELETE and SELECTINTO queries In SQL%NOTFOUND, SQL is called the implicit cursor PL/SQL opens & closes implicit cursors, which is also called SQL cursor You dont declare the implicit cursor If the WHERE clause fails For SELECTINTO statement, then NO_DATA_FOUND error is raised instead of SQL%NOTFOUND For UPDATEs and DELETEs, SQL%NOTFOUND is set to TRUE

26 Exceptions & Exception Handling What are exceptions & exception handlers? The method by which the program reacts & deals with runtime errors How do they work? When a runtime error occurs, an exception is raised Then control is passed to the exception handler (i.e. the EXCEPTION section) Once control is passed to the exception handler, there is no way to return to the executable

section 27 Declaring (Explicit) Exceptions How are explicit exceptions declared? Defined within the DECLARE section Defined using the keyword data type EXCEPTION Name starts with e_ Example: DECLARE e_TooManyStudents EXCEPTION; v_CurrentStudents NUMBER(3); v_MaxStudents NUMBER(3); BEGIN -- process data here EXCEPTION -- handle exceptions here END;/

28 Raising Exceptions How are exceptions used? Within the executable section Test a condition If the condition evaluates to true, then use the keyword RAISE to raise an exception Can use the RAISE keyword with either predefined exceptions or user-defined exceptions 29 Raising Exceptions DECLARE e_TooManyStudents EXCEPTION; v_CurrentStudents NUMBER(3);

v_MaxStudents NUMBER(3); BEGIN SELECT current_students, max_students INTO v_CurrentStudents, v_MaxStudents FROM classes WHERE department = 'HIS' AND course = 101; IF v_CurrentStudents > v_MaxStudents THEN RAISE e_TooManyStudents; END IF; EXCEPTION -- handle exceptions here END;/ 30 Handling Exceptions Syntax DECLARE e_TooManyStudents EXCEPTION; BEGIN -- process data here EXCEPTION WHEN exception_Name1 THEN statements;

WHEN exception_Name2 THEN statements; WHEN OTHERS THEN statements; END;/ An exception can be handled by at most one handler! 31 Handling Exceptions DECLARE e_TooManyStudents EXCEPTION; v_CurrentStudents NUMBER(3); v_MaxStudents NUMBER(3); BEGIN SELECT current_students, max_students INTO v_CurrentStudents, v_MaxStudents FROM classes WHERE department = 'HIS' AND course = 101; IF v_CurrentStudents > v_MaxStudents THEN RAISE e_TooManyStudents;

END IF; EXCEPTION WHEN e_TooManyStudents THEN INSERT INTO log_table (info) VALUES ('History 101 has ' || v_CurrentStudents || 'students: max allowed is ' || v_MaxStudents); WHEN OTHERS THEN INSERT INTO log_table (info) VALUES ('Another error occurred'); END;/ 32 Handling Exceptions Built-in Functions SQLCODE SQLERRM

Returns the error code associated with the error Returns a value of 1 for user-defined exception Returns a value of 0 if no error with the last executed statement Returns the text of the error message Maximum length of an Oracle message is 512 characters Returns User-defined Exception for user-defined exception RAISE_APPLICATION_ERROR RAISE_APPLICATION_ERROR(error#, error_message); Valid error #s: -20,000 and 20,999 Error_Message MUST be less than 512 characters 33 Key Concepts (thus far)

PL/SQL Block IF-THEN-ELSE CASE Loops Simple Loops WHILE Loops FOR Loops Records Cursors

Explicit Implicit Explicit Implicit Exception Handling Naming Conventions 34 Key Concepts: PL/SQL Block Basic building block/unit of PL/SQL programs Three possible sections of a block Declarative section (optional) Executable section (required)

Delimiters : BEGIN, END Exception handling (optional) A block performs a logical unit of work in the program Blocks can be nested 35 Key Concepts: IF-THEN-ELSE & CASE Either specify test case after CASE keyword & OR specify test after WHEN keyword IF boolean_expression1 THEN CASE WHEN boolean_expression1 sequence_of_statements; THEN [ELSIF boolean_expression2

sequence_of_statements; THEN WHEN boolean_expression2 sequence_of_statements] THEN [ELSE sequence_of_statements; sequence_of_statements] ELSE END IF; sequence_of_statements; END CASE; 36 Key Concepts: PL/SQL Loops Used to execute a sequence of statements repeatedly When the number of iterations is unknown

Simple loops: executes at least once WHILE loops: executes while the condition is true When the number of iterations is known in advance Numeric FOR Loops: executes a specific number of times SIMPLE LOOP LOOP sequence_of_statements; EXIT WHEN condition; END LOOP; WHILE LOOP FOR LOOP WHILE condition LOOP FOR loop_Counter IN IN [REVERSE] low..high LOOP sequence_of_statements; sequence_of_statements;

END LOOP; END LOOP; 37 Key Concepts: Records Records Explicit Name begins with t_ Once declared, can be used to declare other variables TYPE t_StudentRecord IS RECORD( Student_ID NUMBER(5), FirstName VARCHAR2(20), LastName VARCHAR2(20)); v_StudentInfo

Implicit t_StudentRecord; %ROWTYPE Declares a record with the same structure as v_StudentInfo student%ROWTYPE Use dot notation to refer to fields within record 38 Key Concepts: Cursors Cursors A pointer to the context area (active set) Name begins with c_

Types: Explicit vs. Implicit Explicit: (1) Declare, (2) Open, (3) Fetch & (4) Close Bind variables Variables that are referenced in the cursor declaration Must be defined BEFORE the cursor Values examined ONLY at run time CURSOR c_HistoryStudents IS SELECT id, first_name, last_name FROM students WHERE major = History; 39 Key Concepts: Cursors Explicit for SELECT statement

Implicit for all other DML statements Used for INSERT, UPDATE, DELETE and SELECTINTO queries PL/SQL opens & closes implicit cursors, which is called SQL cursor If the WHERE clause fails For SELECTINTO statement, then NO_DATA_FOUND error is raised instead of SQL%NOTFOUND For UPDATEs and DELETEs, SQL%NOTFOUND is set to TRUE Four attributes: %FOUND, %NOTFOUND, %ISOPEN, %ROWCOUNT

40 Key Concepts: Exceptions & Exception Handling The method by which the program reacts & deals with runtime errors When a runtime error occurs, an exception is raised & control passes to the EXCEPTION section Once control is passed to the exception handler, there is no way to return to the executable section User-defined exceptions Defined using the keyword data type EXCEPTION Use the keyword RAISE to raise an exception

41 Key Concepts: Exceptions & Exception Handling Pre-defined exceptions NO_DATA_FOUND TOO_MANY_ROWS Division by zero INVALID_NUMBER

Cursor already open ZERO_DIVIDE Cursor already closed CURSOR_ALREADY_OPEN SELECTINTO produces more than one row INVALID_CURSOR no data found in SELECTINTO Data is not numeric (see book for others) 42

Key Concepts: Exceptions & Exception Handling Built-in Functions SQLCODE SQLERRM Returns the error code associated with the error Returns a value of 1 for user-defined exception Returns a value of 0 if no error with the last executed statement Returns the text of the error message Maximum length of an Oracle message is 512 characters

Returns User-defined Exception for user-defined exception RAISE_APPLICATION_ERROR RAISE_APPLICATION_ERROR(error#, error_message); Valid error #s: -20,000 and 20,999 Error_Message MUST be less than 512 characters Used in procedures and functions 43 Key Concepts: Exceptions & Exception Handling Syntax DECLARE e_TooManyStudents EXCEPTION; BEGIN -- process data here EXCEPTION WHEN exception_Name1 THEN statements;

WHEN exception_Name2 THEN statements; WHEN OTHERS THEN statements; END;/ An exception can be handled by at most one handler! 44 Key Concepts: Naming Conventions Item Naming Convention primary keys *_pk *_fk1 *_fk2 foreign keys *_fk# *_u1 *_u2 unique keys *_u# *_ck1 *_ck2 checks *_ck#

sequences *_sequence script files *.sql spooled files *.lst cursors c_ exceptions e_ records t_ variables v_ Note * = tablename * = tablename; # = a sequential number * = tablename * = tablename # represents a sequential number * = tablename * = tablename # represents a sequential number * = field name * can be any name you choose * can be any name you choose (e.g. TEST.LST)

Explicit records 45 SQL Statements DML in PL / SQL The DML statements permitted are: Select Insert Update Delete 46 DML in PL / SQL Select SELECT statement in PL/SQL

retrieves data from a database table into: PL/SQL record set of PL/SQL variables Using SELECT in PL/SQL should only return one row When you need to retrieve more than one row from a table use a cursor 47 DML in PL / SQL Select Syntax SELECT { * | select_list_item } INTO { PL/SQL_record | variables} FROM table_reference WHERE where_clause

each variable must be compatible with its associated select list item count of variables must be same as number of items in list record should contain fields that correspond to the select list in type and count 48 select.sql DECLARE v_StudentRecord students%ROWTYPE; v_Department v_Course classes.department%TYPE; classes.course%TYPE; BEGIN SELECT * INTO v_StudentRecord FROM students WHERE id = 10000; SELECT department, course

INTO v_Department, v_Course FROM classes WHERE room_id = 99997; END; 49 DML in PL / SQL Insert The INSERT statement inserts data into a database table There are two variations of the INSERT command add one row to a table using the specified VALUES list add one or several rows when the insert command uses a SELECT statement 50

DML in PL / SQL Insert Syntax INSERT INTO table_reference [(column_names)] {VALUES (expression) | select_statement} use column names when the values are listed in a different order than as defined during table creation Only a portion of the columns of the table are used during insert table definition remains unchanged after the new row is inserted 51 DML in PL / SQL Insert

The word VALUES must precede the list of data to be inserted Regarding the values in the list: a character string must be in single quotes numbers can stand by themselves dates must be in single quotes In the default Oracle date format Converted using TO_DATE function (this is the suggested method) 52 Insert Using Built-in Functions

You can modify the contents of the values before they are entered into a column of a table by a VALUES list from a SELECT statement Use any of the built-in functions supported by PL/SQL character date functions numeric conversion 53 insert.sql DECLARE

v_StudentID students.id%TYPE; BEGIN SELECT student_sequence.NEXTVAL INTO v_StudentID FROM dual; INSERT INTO students (id, first_name, last_name) VALUES (v_StudentID, 'Timothy', 'Taller'); INSERT INTO students (id, first_name, last_name) VALUES (student_sequence.NEXTVAL, 'Patrick', 'Poll'); END; 54 DML in PL / SQL Insert with Select It is also possible to insert rows into a table using the results of a SELECT statement The results of a SELECT statement can return one or several rows based

on the WHERE clause can be a mix of columns from one or more tables 55 DML in PL / SQL Update Requires setting specific values for each column you wish to change Specifying which row or rows to modify using a WHERE clause You can use built-in functions in setting a value for the update 56 Update in PL / SQL Embedded SELECT

It is possible to set values in an UPDATE by embedding a SELECT statement right in the middle of it SELECT has its own WHERE clause UPDATE has its own WHERE clause to affect the rows You must be certain that the SELECT will return no more than one row 57 Embedded SELECT BEGIN UPDATE comfort set Midnight = (SELECT temperature FROM weather WHERE city = MANCHESTER) WHERE city = WALPOLE AND SampleDate = TO_DATE (22-DEC-1999, DD-MONYYYY); END;

58 DML in PL / SQL Delete Removing a row or rows from a table WHERE clause is necessary to removing only the rows you intend DELETE without the where clause will delete all of the rows of a table 59 delete.sql DECLARE v_StudentCutoff NUMBER; BEGIN v_StudentCutoff := 10; DELETE FROM classes WHERE current_students < v_StudentCutoff; DELETE FROM students

WHERE current_credits = 0 AND major = 'Economics'; END; 60 DML in PL / SQL Truncate Another command for deleting records from a table is the TRUNCATE command TRUNCATE TABLE students; Does not operate the same as DELETE deletes all rows from a table cannot be rolled back records are unrecoverable does not run any DELETE triggers

does not record any information in a snapshot log 61 DML in PL / SQL WHERE Clause The SELECT, UPDATE, and DELETE statements all include the WHERE clause Defines the active set (set of rows): returned by a SELECT query Acted upon by an UPDATE or DELETE Consists of conditions, joined together by the boolean operators AND, OR, and NOT Conditions usually take the form of comparisons using the relational

operators (such as: =, <>, >, >=, <, <=) 62 DML in PL / SQL WHERE Clause with Cursor The UPDATE, and DELETE statements both include a WHERE clause with a special syntax the WHERE CURRENT OF is used with a cursor definition often processing done in a fetch loop modifies the rows that have been retrieved by a cursor 63 DML in PL / SQL WHERE Clause with Cursor

This method consists of two parts: the FOR UPDATE clause in the cursor declaration the WHERE CURRENT OF clause in an UPDATE or DELETE statement 64 forupdat.sql DECLARE v_NumCredits classes.num_credits%TYPE; CURSOR c_RegisteredStudents IS SELECT * FROM students WHERE id IN (SELECT student_id FROM registered_students WHERE department= 'HIS' AND course = 101) FOR UPDATE OF current_credits; 65 forupdat.sql (cont.)

BEGIN FOR v_StudentInfo IN c_RegisteredStudents LOOP SELECT num_credits INTO v_NumCredits FROM classes WHERE department = 'HIS' AND course = 101; UPDATE students SET current_credits = current_credits + v_NumCredits WHERE CURRENT OF c_RegisteredStudents; END LOOP; COMMIT; END; 66 DML in PL / SQL Synonyms It is possible to create a synonym for a:

table view sequence stored procedure function package 67 DML in PL / SQL Synonyms The syntax for creating a synonym is: CREATE SYNONYM synonym_name FOR reference; Where:

synonym_name name of your synonym reference schema object being referenced 68 Pseudocolums Currval and Nextval CURRVAL and NEXTVAL are used with sequences A sequence is an Oracle object used to generate unique numbers Once created, you can access it with its name by: sequence.CURRVAL sequence.NEXTVAL

69 Pseudocolums Currval and Nextval Sequence values can be used in: SELECT list of a query VALUES clause of an INSERT SET clause of an UPDATE Sequence values cannot be used in: WHERE clause PL/SQL statement 70

Recently Viewed Presentations

  • violence - AP Psychology

    violence - AP Psychology

    OPERANT CONDITIONING. A form of associative learning in which the consequences of a behavior change the probability of a behavior's occurrence.. Also called instrumental learning. Active process; behaviors occur spontaneously; the learner decides whether or not to repeat behavior based...
  • Cost Model Based Network Design - NSRP

    Cost Model Based Network Design - NSRP

    The cost model was developed under the National Shipbuilding Research Program (NSRP) Panel Project Number 2016-426 "Paradigm for Optical Networks" www.nsrp.org. Distribution Statement A- Approved for public release.
  • Apresentação do PowerPoint - WordPress.com

    Apresentação do PowerPoint - WordPress.com

    formaÇÃo continuada para professores da educaÇÃo bÁsica na Área de educaÇÃo do campo - moodle. formaÇÃo continuada para professores de matemÁtica no moodle. auxiliar de cozinha. certific camareira. certific pedreiro. instituto federal de roraima campus de amajari. amajari. operador de...
  • Trip to Volgograd, Russia May 10-24, 2007 Robert

    Trip to Volgograd, Russia May 10-24, 2007 Robert

    Accomodations Though staying in 3 different locations, the team usually ate its meals at the Methodist Church of the Transfiguration, home of Pastor Valery and several men and women. Accomodations Dwight and I stayed in a rented, furnished apartment a...
  • LWW PPT Slide Template Master

    LWW PPT Slide Template Master

    Parity, gravida, and previous childbirth experiences. Time frame in previous labors. Characteristics of contractions. Bloody show and membrane status (whether ruptured or intact) Presence of supportive adult in household or if she is alone.
  • 投影片 1 - ncyu.edu.tw

    投影片 1 - ncyu.edu.tw

    (2) 利用Shephard's Lemma以及要素需求函數為要素價格的零階齊次函數的性質, (3) (2)式對 偏微分 (4) 利用(4)式可得出 (5) 令 i 要素達到技術效率的影子份額為 令 i 要素調整技術效率後的影子份額為 (7) (6) 比較 (6) 與 (7) 兩式知,是否考慮 TI 參數 b,不影響 i 要素的 ...
  • DEFENSE LOGISTICS AGENCY AMERICAS AMERICAS COMBAT COMBAT LOGISTICS

    DEFENSE LOGISTICS AGENCY AMERICAS AMERICAS COMBAT COMBAT LOGISTICS

    NSN, Drawing Number, & CAGE. Only Legible, Complete, Unrestricted Drawings Approved for Public Release are Provided. Processing & Research Fee of $12.00. DLA Land and Maritime. WARFIGHTER FIRST • PEOPLE & CULTURE • STRATEGIC ENGAGEMENT • FINANCIAL STEWARDSHIP • PROCESS...
  • The Role of CCDF Subsidy Innovations in Early

    The Role of CCDF Subsidy Innovations in Early

    Where to start? Discuss your subsidy policies in light of your child development and school readiness goals. Make changes to promote continuity and stability - see OCC's Program Instruction on 12 month eligibility, job search