What is a host variable? When a program retrieves data, the values are put into data items defined by your program and specified with the INTO clause of a SELECT INTO or FETCH statement. The data items are called host variables.
How is a host variable identified in an embedded SQL statement? By the colon (:) found preceding the field name.
If the selection criteria will return only one result row, the SELECT INTO statement can be used. The following code is an example of the SELECT INTO structure:
C+ Select MIN(SALARY), AVG(SALARY), MAX(SALARY)
C+ Into :MinSalary, :AvgSalary, :MaxSalary
C+ From EMPMSTR
C+ Where EDLEVEL > :EducLevel
C/End-Exec
If the selection criteria will return more that one row, the FETCH statement must be used. The following code is an example of the FETCH structure:
C+ Fetch Cursor1 Into
C+ Into :RptLastName, :RptFirstName, :RptSalary
C/End-Exec
In conjunction with the FETCH statement, a cursor must be defined, and the cursor must be opened prior to the FETCH and closed after the FETCH.
Now you're asking, "What is a cursor?" It is a declaration of an SQL SELECT statement without the INTO that will potentially return more than one row of data. The following code is an example of an SQL cursor declaration:
C+ Declare Cusror1 Cursor For
C+ Select LASTNAME, FIRSTNAME, SALARY
C+ From EMPMSTR
C+ Where EMPNO = :ScnEmp#
C/End-Exec
In the preceding code samples, you have seen two of the three ways that host variables are used in embedded SQL:
In a WHERE clause
- As a receiving area for column values (named in an INTO clause)
The third way that a host variable is used is as a value in a SELECT clause. The following code is an example of this:
C+ Select LASTNAME, SALARY, :Raise, SALARY + :Raise
C+ Into :RptLastName, :RptSalary, :RptRaise, :RptNewSalary
C+ From EMPMSTR
C+ Where EMPNO = :ScnEmp#
C/End-Exec
With this basic knowledge, using host variables within embedded SQL is made simple.
More information is required to use embedded SQL. The additional information on host variables and embedded SQL can be found on the iSeries Information Center. Select the region, language, and operating system version. Then, navigate to the link for Programming>SQL and select the SQL Programming with Host Languages book.
Paul Weyer is a consultant with New Resources Consulting. He has worked on the iSeries (AS/400) since 1987. His background includes both hardware configuration/installation and software development. Paul is a subject matter expert (SME) with COMMON in the areas of LPAR, IT optimization, performance, availability/business continuity, iSeries operations, and "Managing Beyond Your Server." His language background includes both COBOL and RPG, and he has been using SQL since 1987. Email Paul at
LATEST COMMENTS
MC Press Online