Skip to main contentSkip to search
Powered by Zoomin Software. For more details please contactZoomin
Progress DocumentationProgress Documentation
Progress Documentation
  • Home
  • Home
  • EnglishČeštinaDeutsch (Germany)Español (Spain)Français (France)Italiano (Italy)Português (Brasil)日本語Русский (Russia)中文 (简体) (China)中文 (繁體, 台灣) (Taiwan)ar-AR
  • Login

Develop ABL Applications

Why you use queries in your application

Save PDF
Save selected topicSave selected topic and subtopicsSave all topics
Share
Share to emailCopy topic URL
Print
Table of Contents
  • Introducing ABL
    • About the sample database
    • In the beginning . . . FOR EACH CUSTOMER
      • Starting your OpenEdge session
      • Writing your first procedure
    • Basic characteristics of ABL
      • ABL is procedural
      • ABL is block-structured
      • An ABL procedure consists of statements
      • ABL combines procedural, database, and user interface statements
    • Saving your test procedure
  • Using Basic ABL Constructs
    • Refining the data selection with a WHERE clause
      • Comparison operators
      • Using quotation marks
    • Creating nested blocks to display related data
    • Changing labels and formats
    • Using program variables and data types
      • Defining formats
      • Other variable qualifiers
      • Variable naming conventions
      • Placement of variable definitions
    • Defining an IF-THEN-ELSE decision point
    • Using the ABL Unknown value
    • Using built-In ABL functions
    • ABL Functions
      • Date functions
      • List functions
      • ABL string manipulation functions
    • Putting a calculation into your procedure
      • Arithmetic expressions and operands
      • Arithmetic built-in functions
    • Getting to online help
    • Saving and compiling your test procedure
  • Running ABL Procedures
    • Running a subprocedure
    • Using the Propath
    • Using external and internal procedures
      • Writing internal procedures
      • Assigning a value to a variable
      • When to use internal and external procedures
      • RETURN statement and RETURN-VALUE
    • Adding comments to your procedure
  • Procedure Blocks and Data Access
    • Blocks and block properties
    • Procedure block scoping
    • Language statements that define blocks
      • DO blocks
        • Looping with a DO block
        • Using a DO block to scope records and frames
      • FOR blocks
        • Sorting records by using the BY phrase
        • Joining tables using multiple FOR phrases
        • Alternatives to the EACH keyword
        • Using indexes to relate and sort data
        • Using the USE-INDEX phrase to force a retrieval order
        • Using the LEAVE statement to leave a block
        • Using block headers to identify blocks
        • Using NEXT, STOP, and QUIT to change block behavior
        • Qualifying a FOR statement with a frame reference
      • REPEAT blocks
        • Using the PRESELECT keyword to get data in advance
      • Data access without looping: the FIND statement
        • Index cursors
        • Using the FIND statement in a REPEAT block
        • Switching indexes between FIND statements
        • Using a USE-INDEX phrase to force index selection
        • Doing a unique FIND to retrieve a single record
        • Using the CAN-FIND function
  • Record Buffers and Record Scope
    • Record buffers
    • Record scope
      • Self-contained references to a buffer
      • Generating a procedure listing file
      • Nested, weak-scoped references to the same buffer
      • Weak-scoped blocks and free references
      • Scoping buffers
      • Strong-scoped references and containing blocks
    • Record buffer and error handling
  • Using Queries
    • Why you use queries in your application
      • Queries versus block-oriented data access
      • Using queries to share data between procedures
      • Using queries to populate a browse
    • Defining and using queries
      • OPEN and CLOSE QUERY statements
        • Using an outer join in a query
        • Sorting the query results
      • GET statements
        • Using the QUERY-OFF-END function
      • Closing a query
      • Determining the current number of rows in a query
        • Using a DOWN frame and the DOWN WITH statement
        • Retrieving query results in advance
      • Identifying the current row in the query
        • Using INDEXED-REPOSITION to improve query performance
        • INDEXED-REPOSITION and field lists
        • Factors that invalidate CURRENT-RESULT-ROW and NUM-RESULTS
      • Repositioning a query
        • Using a RowID to identify a record
        • Positioning details with the REPOSITION statement
    • Summary
  • Defining and Using Temp-tables
    • Using temp-tables in your application
      • ABL ProDataSets
      • ABL work-tables
      • The temporary database for temp-tables
      • Defining a temp-table
        • Defining fields for the temp-table
        • Defining indexes for the temp-table
        • Temp-table scope
        • Temp-table buffers
    • Using a temp-table to summarize data
    • Using a temp-table as a parameter
      • Temp-table parameter syntax
      • Passing a temp-table by value
      • Passing a temp-table by reference
      • Passing a temp-table parameter by binding
      • Defining a procedure to return Order Lines
      • Using BUFFER-COPY to assign multiple fields
    • Using include files to duplicate code
    • Adding an Order Line browse to the Customer window
    • Summary
  • Defining Functions
    • User-defined functions
    • Defining a function
      • Making a forward declaration for a function
        • Making a local forward declaration
        • Making a declaration of a function in another procedure
        • Making a declaration of a function IN SUPER
      • Making run-time references with DYNAMIC-FUNCTION
  • Handling Data and Locking Records
    • Overview of data handling statements
    • Record locking in ABL
      • Record locking examples
        • Using EXCLUSIVE-LOCKs
        • Using and upgrading SHARE-LOCKS
        • Using the NO-WAIT Option with the AVAILABLE and LOCKED functions
        • Reading records with NO-LOCK
      • Making sure you release record locks
      • Lock table resources
      • Optimistic and pessimistic locking strategies
        • Using FIND CURRENT and CURRENT-CHANGED
  • Managing Transactions
    • Controlling the size of a transaction
      • Making a transaction larger
      • Making a transaction smaller
      • Transactions and trigger and procedure blocks
      • Checking whether a transaction is active
      • The NO-UNDO keyword on temp-tables and variables
    • Using the UNDO statement
      • Using the UNDO statement in the sample procedure
        • Using UNDO, LEAVE on a block
      • Subtransactions
      • Transaction mechanics
      • Using the ON phrase on a block header
      • Handling the ERROR condition
        • ERROR-STATUS system handle
        • Error handling
        • RETURN statement and ON . . . RETURN phrase
      • ENDKEY condition
      • STOP condition
        • System and software failures
      • QUIT condition
Table of Contents

Why you use queries in your application

Save PDF
Save selected topicSave selected topic and subtopicsSave all topics
Share
Share to emailCopy topic URL
Print
  • Last Updated: March 30, 2020
  • 1 minute read
    • OpenEdge
    • Version 12.2
    • Documentation

The first question to answer about queries is why ABL has them at all. For many years, ABL did not support queries, and developers wrote very powerful and complete applications without them. So, before you go into the details of how to define and use queries, you'll learn the differences between queries and the block-oriented data access language you've used so far.

Contents
  • Queries versus block-oriented data access
  • Using queries to share data between procedures
  • Using queries to populate a browse
TitleResults for “How to create a CRG?”Also Available inAlert