oracle application express cheat sheet

Post on 24-Oct-2014

645 Views

Category:

Documents

16 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Karen Cannell

APEX Cheat Sheet

kcannell@integratc.com

1

www.odtug.com

Cannell

About Me …(Speaker Qualifications)

Karen Cannell ~ Principal

Analyzed, designed developed, converted, upgraded, enhanced and otherwise worked on database applications for 20+ years, focused on Oracle since 1994. Currently migrating business processes from paper to web-based systems, leveraging the Oracle 9i and 10g suite of tools. Lately APEX, Discoverer upgrades.

VOLUNTEER for IOUG, ODTUG, Oracle Magazine. ODTUG Journal Sr. Technical Editor

Volunteer to author ODTUG Journal Articles!!

Using APEX since the HTMLDB beginning

2

www.odtug.com

Cannell

About You … (Audience Background)

New to APEX?APEX Experience?Previous Tools?

APEX Training?Version 3.1?

3

www.odtug.com

Cannell

Session Objectives

Learn APEX syntax; Know what to use when and whereLearn common tricks to customize APEX to your needsAccelerate your APEX learning curve

NOT an APEX How-To Session …NOT an Advanced APEX Session …

4

www.odtug.com

Cannell

Why an APEX Cheat Sheet?

APEX is a blend of technologies …A “Rapid Application Development” tool

Lots of syntax .. Syntax sensitive ..Lots of wizards …Wizards are OK, defaults are OK, but we need more …Mix of languages: HTML, PL/SQL, JavaScript, XML ..

We don’t intuitively know everything!

5

www.odtug.com

Presenter
Presentation Notes
Try adding fly-in HTML, CSS, XML, JavaScript URL

Cannell

What we’ll Cover:

f?p syntaxLearning from APEX

CaseReferencing Items

& . #...# V and NVItem Types, Positions, Defaults Layout Control

Page RegionRegion TemplatesAlignment

Customizations

ValidationAPEXJavaScript

Report tipsEdit LinkEmbed Link in Query

Popup WindowsSending MailCustom AuthenticationReferences

6

www.odtug.com

Cannell

APEX 30-second Intro

Part of Database – Fully SupportedBrowser-based – no client installHTTP Server Rapid Web Development ToolDeclarative ProgrammingWizards Wizards WizardsAll Applications are HTML - no applet downloads

7

www.odtug.com

Cannell

Application BuilderSQL WorkshopUtilities

8

www.odtug.com

Quick APEX Demo ?

APEX Demonstration

9

www.odtug.com

Cannell

f?p Syntax

URL Reference to an APEX pageAll APEX pages are f?p calls

Two Parts:Path to Server:

http://<hostname>:<port>/apex/pls/...

Call to PL/SQL Procedure F with Parameter P…/f?p=<AppId:Page:Session:Request:Debug:ClearCache:

Item Name:Value(s):PrinterFriendly>

10

www.odtug.com

Cannell

http://hostname:port/pls/ape x/

f?p=4000:4001:<session id>::NO:4001:FB_FLOW_ID:700

f?p URL

11

www.odtug.com

Cannell

f?p Part 1: Address to APEX Server

http://<hostname>:<port>/pls/apex/...

http:// hostname Host name:port Port number, usually 7777, 7778,

7779/pls Path to modplsql/apex Name of the PL/SQL DAD used in

APEX configuration. Apex is the default per configuration guide

12

www.odtug.com

Cannell

f?p Part 2: F Call and P Parameter

F is an APEX PL/SQL procedure that renders APEX pagesSingle parameter PP is a concatenation of 9 arguments:

AppId :Page :Session :Request :Debug :ClearCache :Items :Values :PrinterFriendly

f?p=4000:4001:<session id>::NO:4001:FB_FLOW_ID:700

13

www.odtug.com

Cannell

f?p: parameter P argsArgument Definition Usage

App Id Application identifier or alias APP_ID, APP_ALIAS

Page Page number or alias Page number or alias, or use APP_PAGE_ID to reference the current page

Session Session identifier APP_SESSION or SESSION

Request HTTP page request The actual request: GO SAVE, ADD.

Debug Debug flag YES, NO or DEBUG

Clear Cache Clear cache for the listed page(s) Page numbers or page alias, or APP to clear all

Item Name(s) Item names to pass to the page P1_ITEM, P2_ITEM

Item Value(s) Item values to correspond to item names

:P1_ITEM, :P2_ITEM or &P1_ITEM. &P2_ITEM.

Printer Friendly Printer Friendly flag YES, NO or PRINTER_FRIENDLY

14

www.odtug.com

Cannell

f?p P Parameter String

Arguments Must be In OrderColon : to Separate ArgumentsCan Omit Arguments – will DefaultUse : to Maintain PositionIf All Remaining Args are Default, can Omitf?p=550::::::

15

www.odtug.com

Cannell

P = string of arguments

f?p=

AppId : Page : Session : Request :Debug : ClearCache : ItemNames : Values : PrinterFriendly

All Programmers Smartly Request Double Cash In Virtual Programs

16

www.odtug.com

Cannell

f?p Examples

Part of a URL:http://tunahuntress.tunahunter.com:7777/pls/apex/f?p=710:6:361726

3641284922::NO::P6_COMMITTEE_CODE:459

Translates to:Render page 6 of application 710 for the current session, no debug,

using 459 as the value of P6_COMMITTEE_CODE

and looks like …

17

www.odtug.com

Cannell

18

www.odtug.com

Cannell

f?p Example – APEX URL Target

In HTML, as in an APEX URL Target:

<a href=”f?p=(&APP_ID.:12:&APP_SESSION.::NO::P12_COMMITTEE_C

ODE, P12_COMMITTEE_NAME:&P10_COMMITTEE_CODE., &P10_COMMITTEE_NAME.)”>

A link to the current app, page 12, the current session, no debug, setting p12_committee_code and p12_committee_name with the values of p10_committee_code and p10_committee_name.

19

www.odtug.com

Cannell

f?p Example – APEX URL Target

Javascript PopupURL

javascript:popupURL('f?p=&APP_ID.:46: &APP_SESSION.::NO::P46_MEMBERID: &P44_MEMBERID.');

20

www.odtug.com

Presenter
Presentation Notes
Confirm bind vs substitution reference in these examples …

Learn APEX from APEX

APEX Import UtilityImport <APEX install dir>/builder/f4000.sql (f4050.sql,f4155.sql,f4300.sql,f4411.sql …)

On Install:Renumber AppChange Alias

Inspect Only (Cannot run)

21

www.odtug.com

Cannell

About CASE … APEX is picky

APEX passwords ARE case sensitive!APEX item names work in either case, uppercase or lower.Reference to substitution strings should be in UPPERCASE

:APP_ID &SESSION. PRINTER_FRIENDLY.

Button name references should match case

22

www.odtug.com

Cannell

Referencing Items – 6 ways!

Bind Variable :P1_ITEMSubstitution String &P1_ITEM.PL/SQL value function V(‘P1_ITEM’) or NV(‘P1_ITEM’)Direct PL/SQL APEX_APPLICATION.G_FLOW_IDTemplate Substitution

#P1_ITEM#

23

www.odtug.com

Cannell

Bind Variable

:P1_ITEMWithin SQL, PL/SQL, Page Processes, Validations, Computations

Most frequently used

24

www.odtug.com

Presenter
Presentation Notes
Up to 30 characters!!!? Does this limitation still hold?

Cannell

Substitution

&P1_ITEM.Use in APEX element, f?p and HTML references

25

www.odtug.com

Presenter
Presentation Notes
Don’t forget the training dot!

Cannell

Substitution Syntax - Example

In the Messages Dialog of a Process:

… Demo Email sent to &P2_EMAILADDRESS.

26

www.odtug.com

Cannell

V and NV Functions

V(‘P1_ITEM’) and NV(‘P1_NUMBER’)Use within PL/SQL modulesCurrent session only

Do not work in spawned/background jobs

27

www.odtug.com

Cannell

V and NV Caution

Not DETERMINISTICPotential Performance ImpactSELECT x,y,z FROM abc WHERE x = V(‘P1_ITEM’)Executes once for each row of abc

Wrapper for V and NV – Drop-in “replacement” available from Inside-Apex Blog at:http://inside-apex.blogspot.com/2006/12/drop-in-replacement-for- v-and-nv.html

thanks Patrick!

28

www.odtug.com

Cannell

Template Substitution

#P1_ITEM#Page, Region and Report TemplatesUse to customize your own templatesBe aware of #...# to understand APEX templates, button, nav bar, default region placement

29

www.odtug.com

Cannell

Template Substitution - Example

Template Substitution - default placement for Region

Buttons

<table class="t12FormRegion" id="#REGION_ID#" summary=""><tr><td class="t12Header">#TITLE#</td></tr><tr><td class="t12ButtonHolder">#CLOSE##PREVIOUS##NEXT##DELETE##EDI T##CHANGE##CREATE##HELP#</td></tr><tr><td class="t12Body">#BODY#</td></tr><tr><td><img src="#IMAGE_PREFIX#themes/theme_12/t.gif" width="400" height="1"></td></tr></table>

30

www.odtug.com

Cannell

Direct

APEX_APPLICATION.G_<name>Used in PL/SQL, similar to V and NVCurrent session only

Do not work in spawned/background jobs

31

www.odtug.com

Cannell

What to Use When

:Bind variables in SQL, Page Processes, Validations, Computations&__. Substitution In HTMLV and NV or APEX_APPLICATION in PL/SQL #TEMPLATE# in page, region, report and other templates.

32

www.odtug.com

Cannell

Syntax Examples

HTML anchor in Header, Footer or HTML Region:<a href=”f?p=&APP_ALIAS.:4:&APP_SESSION.>”Click here for Page 4</a>

PL/SQL htf.anchor:htf.anchor(‘f?p=’||APEX_APPLICATION.G_FLOW_ID||’:4:’||V(‘APP_SESSION’),’Click

for Page 4’);orhtf.anchor(‘f?p=’||V(‘APP_ID’)||’:4:’||V(‘APP_SESSION’),’Click for Page 4’);

Anchor in a SQL Query:SELECT ‘<a href=“f?p=’||:APP_ID||’:4:'||:APP_SESSION||’>Click for Page 4</a>’

FROM DUAL;

33

www.odtug.com

Cannell

Item Type, Position and Default

Item TypesPosition OptionsUser Interface Defaults

Know the Defaults ... Then Know How to Adjust

34

www.odtug.com

Cannell

Item Types –APEX defaults

35

www.odtug.com

Cannell

Some Different Item Types

File BrowseMulti SelectShuttleStop/Start TableText Area … w/Counter, Spellcheck, HTML Editor

36

www.odtug.com

Cannell

Advanced Item Types

37

www.odtug.com

Cannell

Item Position Settings

Use the Displayed settings to adjust item placement relative to other items on the page

New Line NoField NoColSpan 1 RowSpan 1

New Line YesField YesColSpan 1 RowSpan 1

38

www.odtug.com

Cannell

Drag and Drop Item Layout

Access from Items element

39

www.odtug.com

Cannell

Drag and Drop Item Interface

40

www.odtug.com

Cannell

User Interface Defaults

Use them! Tedious now or later.Shared Components User Interface User Interface DefaultsBy Table or ViewDefines Defaults for Reports and FormsGrid or Individual Element Access

41

www.odtug.com

Cannell

User Interface Defaults

42

www.odtug.com

Cannell

Layout Control

Page RegionRegion Templates

Know the Defaults ... Then Know How to Adjust

43

www.odtug.com

Cannell

Page Regions

Will vary slightlyfrom theme to theme

Region Positionfor Sidebar

Note templateSubstitution Strings

If you don’t like it …Edit the Template!

paper #447

44

www.odtug.com

Cannell

Region Templates

Will vary slightly from theme to theme

Edit as you like

45

www.odtug.com

Cannell

Region Templates

alt. theme

paper #447

46

www.odtug.com

Cannell

Forcing Alignment

RegionsSpecifically set Height and Width

<table height=”400” width=”400”><tr><td>

and close with</td></tr></table>

Use a Spacer image to force height or width<img src="#IMAGE_PREFIX#/1px_trans.gif" width="355"

height="0">

47

www.odtug.com

Cannell

Forcing Region Alignment

Spacer (pixel) image in header, footer, source

Img src=#IMAGE_PREFIX#/1px_trans.gif width =“355” height=“0”>

48

www.odtug.com

Cannell

49

www.odtug.com

Cannell

Forcing Item Alignment

Use the HTML Form Element Attributes field:Select Listsstyle=“width:80;”

Form Fieldsstyle=“width:80;”

Set other Item attributes:style=”text-transform:uppercase;”onFocus=”javascript:this.maxlength=30;”

50

www.odtug.com

Cannell

Force Item Alignment, Attributes

Text Area: Set height, width, a scrollbar and force the data to Uppercase

style="font-family:Arial;font-size:10px; height:50px;width:300px;overflow:auto;" onBlur="javascript:{this.value = this.value.toUpperCase(); }"

51

www.odtug.com

Cannell

Customizations

Header LogoCorporate Interface / Look-and-Feel

52

www.odtug.com

Cannell

Header Logo or Text

Application Edit Attributes Definition Logo.

53

www.odtug.com

Cannell

Corporate User Interface

Yes, Is DoableBest Reference: Cloning your Corporate UI with HTML DB blog series

at http://www.orablogs.com/scott/archives/001189.html Scott Spendolini

My Experience: 1 Hour to “Useable”, 4+ for all page templates complete with substitution tagsAdvice: Go for It … weighing costs, of course.

54

www.odtug.com

Cannell

To Change Default Templates

Application Shared Components Themes Create/Edit ThemeHere can edit all default templates

55

www.odtug.com

Cannellpaper #447

56

www.odtug.com

Cannell

Validations

APEXJavaScript

57

www.odtug.com

Cannell

Validations - APEX

Item or Page LevelNOT NULL, String Comp, Reg Exp, SQL, PL/SQL

58

www.odtug.com

Cannell

Validations - JavaScript

In HTML Form Element Attributes field

Not a JavaScript wiz? Search online …

59

www.odtug.com

Cannell

JavaScript Example - SSN

In HTML Form Element Attributes:

onBlur="javascript:SSNValidation(this.value);“

Function goes in the Page Header, or, in an include file that contains all the JavaScript for the page.

60

www.odtug.com

Cannell

JavaScript – function in Header

function SSNValidation(ssn) {var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);var numDashes = ssn.split('-').length - 1;if (matchArr == null || numDashes == 1) {

alert('Invalid SSN. Must be 9 digits or in the form NNN- NN-NNNN.');msg = "does not appear to be valid";

}else if (parseInt(matchArr[1],10)==0) {

alert("Invalid SSN: SSN's can't start with 000.");msg = "does not appear to be valid";

} }

61

www.odtug.com

Cannell

Reports

Edit LinkURL(f?p) in SQL QueryInteractive Reports (3.1)

62

www.odtug.com

Cannell

Report – Edit Link

Report Region Region Attributes Column Link

63

www.odtug.com

Cannell

Embed Link in SQL Query - example

Embed a link in SQL QuerySELECT ‘http://www.ioug.org/open_link.cfm?’ OPEN, MEMBER_ID, LAST_NAME, …

SELECT “f?p( …)” PLINK, MEMBER_ID, LAST_NAME, …

The link is now part of your report. Too Simple!

64

www.odtug.com

Cannell

Interactive Reports

Includes a Select Bar and an Action BarSettings are Options in Report Attributes

65

www.odtug.com

Cannell

Interactive Reports - Limitations

Single TemplateCustomize by CSS only (no template edits)

One IR per pageCannot be an Updateable Report

67

www.odtug.com

Cannell

Popup Options

APEX JavaScript built-in popupURLjavascript:popupURL('f?p=&APP_ID.:46:&SESSION.:: NO::P46_MEMBERID:&P44_MEMBERID.');

Build Custom Popup PageOTN APEX How-To Build Custom Popup Pages

http://www.oracle.com/technology/products/database/ application_express/howtos/how_to_create_custom _popups.html

68

www.odtug.com

Cannell

Build Custom Popup - steps

Build Calling Form PageBuild Popup PageAdd JavaScript to call the Popup Page, passing values as neededAdd Popup Link or ButtonAdd JavaScript to Popup Page to pass values back

See the How-To for Syntax details!

69

www.odtug.com

Cannell

Sending Email

Configure Email Server SettingsHTMLDB_MAIL packageHMTLDB_MAIL.SENDHTMLDB_MAIL.PUSH_QUEUE

70

www.odtug.com

Cannell

Environment Settings SMTP Mail Server

Set by the APEX Administrator for the installation

71

www.odtug.com

Cannell

APEX_MAIL.SEND

APEX_MAIL.SEND ( p_to IN VARCHAR2,p_from IN VARCHAR2,p_body IN VARCHAR2 | CLOB,p_body_html IN VARCHAR2 | CLOB,p_subj IN VARCHAR2 DEFAULT NULL,p_cc IN VARCHAR2 DEFAULT NULL,p_bcc IN VARCHAR2 DEFAULT NULL);

72

www.odtug.com

Presenter
Presentation Notes
Body CLOB or VARCHAR2 To, From must be legal addresses

Cannell

APEX_MAIL.SEND - Function

v_mail_id := APEX_MAIL.SEND ( p_to IN VARCHAR2,p_from IN VARCHAR2,p_body IN VARCHAR2 | CLOB,p_body_html IN VARCHAR2 | CLOB,p_subj IN VARCHAR2 DEFAULT NULL,p_cc IN VARCHAR2 DEFAULT NULL,p_bcc IN VARCHAR2 DEFAULT NULL);

73

www.odtug.com

Presenter
Presentation Notes
Body CLOB or VARCHAR2 To, From must be legal addresses

Cannell

APEX_MAIL - Example

DECLAREl_body_html varchar2(4000);lv_tolist varchar2( 2000) := ‘joedba@yourcompany.com’;

BEGINl_body_html := '<p> ‘||‘To view matching KALEIDOSCOPE Contacts click the link: </p>'||'<a href="http://tunahuntress.tunahunter.com:7777’||'/f?p=550:33:::::’||'P33_REPORT_SEARCH:'||:P1_LAST||'">View KALEIDOSCOPE Contacts</a></p>';

APEX_MAIL.SEND(P_TO => lv_tolist,P_FROM => :P1_EMAIL,P_BODY => l_body_html,P_BODY_HTML => l_body_html,P_SUBJ => 'New Mail Message from APEX’;

END;

DECLAREl_body_html varchar2(4000);lv_tolist varchar2( 2000) := ‘joedba@yourcompany.com’;

BEGINl_body_html := '<p> ‘||‘To view matching KALEIDOSCOPE Contacts click the link: </p>'||'<a href="http://tunahuntress.tunahunter.com:7777’||'/f?p=550:33:::::’||'P33_REPORT_SEARCH:'||:P1_LAST||'">View KALEIDOSCOPE Contacts</a></p>';

APEX_MAIL.SEND(P_TO => lv_tolist,P_FROM => :P1_EMAIL,P_BODY => l_body_html,P_BODY_HTML => l_body_html,P_SUBJ => 'New Mail Message from APEX’;

END;

DECLAREl_body_html varchar2(4000);lv_tolist varchar2( 2000) := ‘joedba@yourcompany.com’;

BEGINl_body_html := '<p> ‘||‘To view matching KALEIDOSCOPE Contacts click the link: </p>'||'<a href="http://tunahuntress.tunahunter.com:7777’||'/f?p=550:33:::::’||'P33_REPORT_SEARCH:'||:P1_LAST||'">View KALEIDOSCOPE Contacts</a></p>';

APEX_MAIL.SEND(P_TO => lv_tolist,P_FROM => :P1_EMAIL,P_BODY => l_body_html,P_BODY_HTML => l_body_html,P_SUBJ => 'New Mail Message from APEX’;

END;

74

www.odtug.com

Presenter
Presentation Notes
Note SEND call, and note embedded f?p link to a page in the application

Cannell

APEX_MAIL.PUSH_QUEUE

Mail Queue “Sent” – Pushed – every 10 min.PUSH_QUEUE to send immediately

APEX_MAIL.PUSH_QUEUE( p_smtp_hostname IN VARCHAR2 DEFAULT,p_smtp_portno IN NUMBER DEFAULT);

APEX_MAIL.PUSH_QUEUE;

Useful for Debugging – No Wait

75

www.odtug.com

Cannell

APEX Mail Attachments

Not possible via APEX_MAIL til APEX 3.1Can do via UTL_SMTP or Java Stored ProcedureSee OTN APEX Forum thread http://forums.oracle.com/forums/thread.jspa?message

ID=1383936

76

www.odtug.com

Cannell

APEX_MAIL.ADD_ATTACHMENT

APEX_MAIL.ADD_ATTACHMENT( p_mail_id IN NUMBER, p_attachment IN BLOB, p_filename IN VARCHAR2, p_mime_type IN VARCHAR2);

Use function version of APEX_MAIL.SEND to return a mail id.Query filename from APEX_APPLICATION_FILESAdd multiple attachments by multiple ADD_ATTACHMENT calls

77

www.odtug.com

Cannell

APEX Mail Attachments - ExampleDECLARE l_id number;

BEGIN l_id := APEX_MAIL.SEND(

p_to => 'fred@flintstone.com', p_from => 'barney@rubble.com', p_subj => 'APEX_MAIL with attachment', p_body => 'Please review the attachment.', p_body_html => '<b>Please</b> review the attachment' );

FOR c1 IN (SELECT filename, blob_content, mime_type FROM APEX_APPLICATION_FILES WHERE ID IN (123,456)) loop --APEX_MAIL.ADD_ATTACHMENT( p_mail_id => l_id, p_attachment => c1.blob_content, p_filename => c1.filename, p_mime_type => c1.mime_type);

END LOOP; COMMIT; END;

Example from APEX User Guide

78

www.odtug.com

Cannell

Custom Authentication

Custom Authentication WizardMost defaults are OK

Page Sentry function (here or redirect?)

Session Verify function (valid session?)

Invalid Session Target (where to go if failed login)

Pre-Authentication (cookies? audits?)

Authentication Process …

79

www.odtug.com

Cannell

Final Words …

SAVE OFTENApply ChangesBusiness Logic in PackagesExport Periodically (a simple backup!)

Apply Sound Development Practices

81

www.odtug.com

Cannell

APEX Resources

APEX Forumhttp://forums.oracle.com/forums/forum.jspa?forumID=137

APEX Studiohttp://apex.oracle.com/i/index.html

APEX OTN Technology Center http://www.oracle.com/technology/products/database/application_e xpress/index.html

Oracle Metalinkhttp://metalink.oracle.com

82

www.odtug.com

Cannell

APEX Resources, cont’dBlogs, Blogs and More Blogs …

Scott Spendolini: http://spendolini.blogspot.com and the older http://blogs.oracle/com/scott

Carl Backstrom: http://carlback.blogspot.com

APEX Blogs …John Scott, http://jes.blogs.shellprompt.net/Dimitri Gielis, http://dgielis.blogspot.com/Mark Swetz http://marcsewtz.blogspot.com/index.htmlDenes Kubicek, http://deneskubicek.blogspot.com/Dietmar Aust, http://daust.blogspot.com/Patrick Wolf – Inside APEX. http://inside-apex.blogspot.com and the ApexLib add-on

at http://apexlib.sourceforge.netand more blogs off of these!

Many thanks to Mike ,Joel ,Raj, David

83

www.odtug.com

Cannell

APEX Resources, cont’d

TextbooksOracle HTMLDB Handbook, Develop and Deploy Fast, Secure Web Applications by Bradley Brown, Lawrence Linnemeyer, Oracle Press, 2006.Easy Oracle HTML-DB, Create Dynamic Web Pages with Oracle by Michael Cunningham and Kent Crotty, Rampant Press, 2006.

Pro Application Express by John Scott, Scott Spendolini Coming Soon!

84

www.odtug.com

Cannell

Share Your Knowledge ! Call for Articles/Reviewers

ODTUG Journal IOUG SELECT Journal

85

www.odtug.com

APEX Cheat Sheet

Karen Cannellkcannell@integratc.com

Questions ?

86

www.odtug.com

APEX Cheat Sheet

Karen Cannellkcannell@integratc.com

Thank You ~

87

www.odtug.com

top related