About REF CURSOR queries
2.6.10 About REF CURSOR queries
A REF CURSOR query uses PLSQL to fetch data. Each REF CURSOR query is associated with a PLSQL function that returns a cursor value from a cursor variable. The function must ensure that the REF CURSOR is opened and associated with a SELECT statement that has a SELECT list that matches the type of the REF CURSOR. Oracle Reports supports both static and dynamic REF CURSORs. For example: Static REF CURSOR: open l_rc for SELECT FROM emp WHERE ename = KING; Dynamic REF CURSOR: l_query := SELECT empno, ename, sal, hiredate FROM emp WHERE 1-1; open l_rc for l_query; For a detailed example, see Chapter 41, Building a Paper Report with REF CURSORs . Usage notes ■ Oracle Reports supports only strongly typed REF CURSORs. For example: type c1 is REF CURSOR RETURN empROWTYPE; Note: The use of REF CURSOR queries in Oracle Reports 11g Release 1 11.1.1 requires that your database version is 10.1.0.5 for 10.1 or 10.2.0.2 for 10.2 or higher. Interoperability between a 11g Release 1 11.1.1 database or Oracle Forms Services client and a 10.110.2 database requires a minimum patchset level of 10.1.0.5 for 10.1 or 10.2.0.2 for 10.2. An attempt to reference a 10.1 or 10.2 PLSQL unit or view under the following circumstances will fail with a PLS-801[55916] error unless the 10.1 or 10.2 environment has been patched to the right level: ■ A PLSQL unit, anonymous block, trigger, call statement, or SQL statement on a 11g Release 1 11.1.1 database invokes a PLSQL unit on a 10.1 or 10.2 database across a database link. ■ A PLSQL unit, anonymous block, trigger, or call statement on a 11g Release 1 11.1.1 database references a view on a 10.1 or 10.2 database across a database link and the view directly or indirectly references a PLSQL function or an object type. ■ An Oracle Forms Services 11g Release 1 11.1.1 client invokes a PLSQL unit in a 10.1 or 10.2 database using RPC. Note: The SELECT statement must be explicitly set for dynamic REF CURSORs. Advanced Concepts 2-43 ■ When you make a REF CURSOR query the child in a data link, the link can only be a group to group link. It cannot be a column to column link. ■ If you use a stored program unit to implement REF CURSORs, you receive the added benefits that go along with storing your program units in the Oracle database. ■ You base a query on a REF CURSOR when you want to: – more easily administer SQL. – avoid the use of lexical parameters in your reports. – share data sources with other applications, such as Form Builder. – increase control and security. – encapsulate logic within a subprogram. Furthermore, if you use a stored program unit to implement REF CURSORs, you receive the added benefits that go along with storing your program units in the Oracle database. For more information about REF CURSORs and stored subprograms, refer to the PLSQL Users Guide and Reference. Examples Example 1: Package with REF CURSOR example This package spec defines a REF CURSOR type that could be referenced from a REF CURSOR query function. If creating this spec as a stored procedure in a tool such as SQLPlus, you would need to use the CREATE PACKAGE command. PACKAGE cv IS type comp_rec is RECORD deptno number, ename varchar10, compensation number; type comp_cv is REF CURSOR return comp_rec; END; Example 2: Package with REF CURSOR and function This package spec and body define a ref cursor type as well as a function that uses the REF CURSOR to return data. The function could be referenced from the REF CURSOR query, which would greatly simplify the PLSQL in the query itself. If creating this spec and body as a stored procedure in a tool such as SQLPlus, you would need to use the CREATE PACKAGE and CREATE PACKAGE BODY commands. PACKAGE cv IS 2-44 Oracle Reports Users Guide to Building Reports type comp_rec is RECORD deptno number, ename varchar10, compensation number; type comp_cv is REF CURSOR return comp_rec; function emprefcdeptno1 number return comp_cv; END; PACKAGE BODY cv IS function emprefcdeptno1 number return comp_cv is temp_cv cv.comp_cv; begin if deptno1 20 then open temp_cv for select deptno, ename, 1.25sal+nvlcomm,0 compensation from emp where deptno = deptno1; else open temp_cv for select deptno, ename, 1.15sal+nvlcomm,0 compensation from emp where deptno = deptno1; end if; return temp_cv; end; END; Example 3: REF CURSOR query This REF CURSOR query function would be coded in the query itself. It uses the cv.comp_cv REF CURSOR from the cv package to return data for the query. function DS_3RefCurDS return cv.comp_cv is temp_cv cv.comp_cv; begin if :deptno 20 then open temp_cv for select deptno, ename, 1.25sal+nvlcomm,0 compensation from emp where deptno = :deptno; else open temp_cv for select deptno, ename, 1.15sal+nvlcomm,0 compensation from emp where deptno = :deptno; end if; return temp_cv; end; Example 4: REF CURSOR query calling function This REF CURSOR query function would be coded in the query itself. It uses the cv.comp_cv REF CURSOR and the cv.emprefc function from the cv package to return data for the query. Because it uses the function from the cv package, the logic for the query resides mainly within the package. Query administrationmaintenance can be done at the package level for example, modifying SELECT clauses could be done by updating the package. You could also easily move the package to the database. Advanced Concepts 2-45 Note this example assumes you have defined a user parameter named deptno. function DS_3RefCurDS return cv.comp_cv is temp_cv cv.comp_cv; begin temp_cv := cv.emprefc:deptno; return temp_cv; end; See also Section 4.8.1.7, Creating a query: REF CURSOR Query tool2.6.11 About DML and DDL
Parts
» Oracle Fusion Middleware Online Documentation Library
» About Oracle Reports Builder
» About tabular reports About group above reports About group left reports About form-like reports
» Summary settings Creating a summary for a matrix requires more information
» Matrix object The matrix object defines the intersection of at least two
» About the Report Wizard About the Report Block Wizard About the Data Wizard
» About the Report Editor About the Data Model view About the Paper Layout view
» About the Paper Design view About the Paper Parameter Form view
» About queries Data Model Objects
» About groups Data Model Objects
» About database columns About data links
» About frames About repeating frames
» About frame and repeating frame sizing About fields
» About boilerplate objects Layout Objects
» About parameters Parameter Form Objects
» About Parameter Form fields About Parameter Form boilerplate About Parameter Forms for Web reports
» About making multiple selections in the Property Inspector
» About the Runtime Parameter Form About the Previewer
» About report titles About report sectioning and sections
» About the report unit of measurement About the report dimensions
» About fonts in reports About conditional formatting
» About nested matrix reports About matrix with group reports
» Using JSPs in Oracle Reports
» About previewing JSP-based Web reports
» About Web links for HTML output
» About Web links for PDF output About hyperlinks
» About style sheets Web Reports
» About summary columns About formula columns About placeholder columns
» About bind references About referencing columns and parameters
» About lexical references About referencing columns and parameters
» About non-linkable queries About links versus groups
» About matrix objects Data Model Objects
» About layout objects About layout defaulting
» Implicit anchoring algorithm About anchors
» About changing colors and patterns
» About resizing objects About moving and layering objects in the Paper Layout view
» About the PLSQL Editor About the Stored PLSQL Editor About the Syntax Palette About program units
» About stored program units About external PLSQL libraries
» About attached libraries About formulas
» About the Oracle Reports Builder built-in package SRW About the Tools built-in packages
» About report triggers About triggers
» About format triggers About validation triggers
» About templates About template attributes
» About applying templates About inheritance in templates
» About format order Output Formats and Capabilities
» About batch reporting About pluggable destinations
» About event-driven publishing About switching the printer tray About XML in reports
» About HTML formatting Output Formats and Capabilities
» About PDF output Output Formats and Capabilities
» About RTF output About delimited output
» About Enhanced Spreadsheet output
» About text output About creating an ASCII character-mode report
» About database roles About Oracle Net Services About user exits
» About the debugging process About the PLSQL Interpreter About the Source pane
» About debug commands in the PLSQL Interpreter About the current execution location
» About the current scope location About debug levels
» Oracle Reports Components Summary
» Using the Oracle Reports online Help Locating other documentation
» Setting color palette preferences Setting properties of multiple objects
» Selecting single objects Selecting multiple objects Selecting objects owned by a frame
» Adding index to a report Creating an ASCII character-mode report Preparing a multiplatform report
» Adding navigation controls for HTML page-streamed output using the Property
» Running and dispatching a report from the user interface
» Generating PDF output Generating XML output
» Generating RTF output Generating text output Generating delimited output
» Generating Enhanced spreadsheet output Distributing a report to multiple destinations
» Deploying a report Changing orientation
» Displaying report output in your Web browser Displaying individual pages of HTML report output
» Scrolling and paging Splitting the viewing region Magnifying or reducing the output
» Printing a report on a preprinted form Switching the printer tray Printing a report on UNIX
» Suppressing the Parameter Form E-mailing a report
» Creating a query: Report Wizard Creating a query: Data Wizard Creating a query: SQL Query tool
» Modifying a query Using Query Builder Selecting HTML tags from the database
» Selecting an image from the database Selecting an image URL from the database
» Creating a break group Creating a matrix cross-product group
» Creating a data link Creating or editing a formula column
» Creating a field object Creating a frame or repeating frame Creating a matrix object
» Editing text Referencing a field in boilerplate text
» Linking a boilerplate text object to a file Linking an HTML text object to a file
» Creating page numbers Resetting page numbers
» Anchoring objects together Viewing implicit anchors Moving an anchor
» Setting color palette preferences Changing colors Changing patterns
» Highlighting a value Highlighting a row
» Specifying date and time format masks
» Specifying number format masks
» Creating a text heading Creating a heading that includes database values
» Adjusting margins Adding a page break
» Using a pre-defined system parameter Creating a user parameter
» Creating a list of values LOV for a parameter Validating a parameter value at runtime
» Creating a template Defining default template attributes
» Defining override template attributes Applying a template to a report
» Adding a template to the pre-defined templates list Creating an HTML template for a report portlet
» Using the mouse in the PLSQL Editor The following table describes the mouse
» Creating a local program unit Creating a stored program unit
» Deleting a program unit Moving a program unit between client and database server
» Compiling a single program unit Compiling all program units Compiling all uncompiled program units
» Debugging a report Running a report in debug mode
» Setting a breakpoint Setting a debug trigger
» Accessing non-Oracle data sources
» Improving performance using WHERE clauses
» Prerequisites for This Example Use the Report Wizard to Create a Report
» Summary Oracle Fusion Middleware Online Documentation Library
» Prerequisites for This Example Use the Report Wizard to Create a Mailing Label Report
» Add Vertical Spacing Summary
» Prerequisites for This Example Use the Report Wizard to Create a Form Letter Report
» Use the Data Wizard to Create Two Queries
» Use the Report Wizard to Layout the Data
» Use the Paper Layout View to Add White Space
» Prerequisites for This Example
» Create a Data Model and a Group Above Layout
» Format Fields Oracle Fusion Middleware Online Documentation Library
» Examine the Summary Column Properties optional
» Create a data model with a break group and group left layout
» Format a field Use the Property Inspector to add white space
» Redefault the layout Group Report with Two Break Columns
» Prerequisites for This Example Summary
» Create a Data Model with a Data Link
» Format a Field Oracle Fusion Middleware Online Documentation Library
» Prerequisites for This Example Create Two Queries
» Run Your Report to Paper Summary
» Prerequisites for This Example Create a New Report Manually
» Use the Paper Layout View to Create Two Layouts
» Format Fields Summary Oracle Fusion Middleware Online Documentation Library
» Prerequisites for This Example Use the Report Wizard to Create a Simple Report
» Create a formula column to calculate the tax
» Prerequisites for This Example Create a Query in the Data Model View
» Create Three Summary Columns
» Create the Default Layout Using the Report Wizard
» Modify the Layout of the Report Run your Report to Paper Summary
» Prerequisites for This Example Create a Data Model and a Group Left Layout
» Move a Summary Oracle Fusion Middleware Online Documentation Library
» Add White Space and Format Fields Summary
» Add Summary Columns for the Header Data Add a Page Heading
» Prerequisites for This Example Create a Simple Report Definition
» Add a border around the report
» Change the font size and style
» Display a line between each record
» Prerequisites for This Example Create a Data Model and a Group Above Layout
» Redefault the Layout Oracle Fusion Middleware Online Documentation Library
» Set Properties and Format Fields
» Create New Fields Oracle Fusion Middleware Online Documentation Library
» Reference Fields Summary Oracle Fusion Middleware Online Documentation Library
» Prerequisites for This example Create a Data Model and a Layout
» Add a Field Remove a Redundant Field
» Suppress Redundant Values Oracle Fusion Middleware Online Documentation Library
» Prerequisites for This Example Create the Data Model with Two Linked Queries
» Create a formula column in the detail query Create a summary column in the master query
» Create the initial layout of your report
» Add a Format Trigger to Suppress Labels
» Add Text to Display when No Records Display
» Prerequisites for This Example Create a Basic Tabular Report
» Add Conditional Formatting to the Report
» Examine the Conditional Format Trigger Code Summary
» Prerequisites for This Example Create the Data Model and Layout
» Add Additional Text Oracle Fusion Middleware Online Documentation Library
» Access to the data source and installing the Pictures table
» Create the Data Model with Two Linked Queries
» Create the initial layout of your report using the Report Wizard
» Prerequisites for This Example Create a Single-Query Matrix
» Create a new report manually Create a data model with a cross product and a data link
» Create the layout with the Report Wizard
» Add Summaries to the Single-Query Matrix
» Format Monetary Values Add Zeroes in Place of Blanks
» Create a new report manually Create a data model with a cross product and data links
» Format Monetary Values Summary
» Prerequisites for This Example Create a Matrix Group Data Model and Layout
» Add Labels and Lines for Summaries Add Space Between Groups
» Prerequisites for This Example Create a Query and the Layout
» Modify the Web Source of Your JSP Report
» Modify Your JSP Report to Display in Microsoft Excel
» centimeters to make room between the f_bottom and f_top fields.
» Modify the Web Source of Your JSP Report Summary
» Prerequisites for This Example Create a Report Using the Report Wizard
» Create a formula column in your data model
» Create a Query That Returns the Items in the Order
» Rearrange the layout objects
» Import the blank check image Set up the check printing fields
» Rearrange the new fields according to the blank check image
» Create a check stub in the Paper Design view
» Add order details to the check stub
» Create the queries Manually Create the Data Model for Your Report
» Create an address label for your form
» Add the order item details to your report
» Adjust the layout and add summaries
» Format Your Report in the Paper Design View
» Create Summary and Formula Columns
» Prepare the Layout Oracle Fusion Middleware Online Documentation Library
» Insert Invoice Information Oracle Fusion Middleware Online Documentation Library
» Prerequisites for This Example Create a Data Model and Tabular Layout
» Create Ranking Logic for Top number of Customers
» Add a Layout Object for a Parameter
» Create a table in the database to hold the TOC data Create a group above report
» Create an After Parameter Form trigger
» Create a second query in the data model
» Create a table in the database to hold the information for the index Create a format trigger
» Prerequisites for This Example Create a table in the database to hold the TOC data
» Create a Second Query in the Data Model Create a Report Block to Display the Table of Contents
» Run Your Multilevel Table of Contents Report to Paper
» Set Up an Existing Report for Bursting
» Edit the Distribution XML Definition Run the Report
» Create the Query and Paper Layout for a Multibyte Report
» Display Multibyte Characters in the Report Create a PDF Document of Your Report
» About Graphs and Graph Wizards
» Funnel Graph New Graph Types
» Curved Line or Fit To Curve Graph
» Enhanced Pie New Graph Types
» Prerequisites for This Example Create a New PLSQL Library
» Create a query Create a formula column that calculates bonuses
» Create a report-level function that calculates total compensation
» Create a second formula column for total compensation
» Create the Report Layout Using the Report Block Wizard
» Prerequisites for This Example Define a REF CURSOR Type
» Create Links Between REF CURSOR Queries
» Add Summary Columns Oracle Fusion Middleware Online Documentation Library
» Create a Layout Oracle Fusion Middleware Online Documentation Library
» Move the SELECT Statements Into Packages Move the Packages Into a Library
» Create a Parameter Form in HTML
» Create a data model manually for the Parameter Form
» Create a dynamic LOV in the Parameter Form
» Deploy the JSP Parameter Form and the Target Report
» Update the REPORTS_CLASSPATH environment variable
» Import the Java classes into Reports Builder
» Create a package to store your information
» Create a Before Report trigger Create a query in the Data Model view
» Create a formula column to retrieve the barcode image
» Create a formula column that returns the order total
» Create a layout for your report
» Create a query in an existing HTML file
» Create three formula columns in your data model
» Initialize the barcode JavaBean and set its properties
» Create a SQL query for your new report
» Create an XML query to access your XML data source
» Create a data link between two queries
» Create a layout for your report using the Report Wizard
» Apply alternating row colors to your report Filter your XML data using a group filter
» Prerequisites for This Example Run Your Report to Paper
Show more