Ways to return results as procedure parameters

Procedures can return results to the calling environment in the parameters to the procedure. Within a procedure, parameters and variables can be assigned values using:

Example 1: Create a procedure and select its results using a SELECT...INTO statement

  1. Start Interactive SQL and connect to the SAP Sybase IQ sample database. You must have the CREATE PROCEDURE system privilege and either SELECT privilege on the Employees table or the SELECT ANY TABLE system privilege.

  2. In the SQL Statements pane, execute the following statement to create a procedure (AverageSalary) that returns the average salary of employees as an OUT parameter:

    CREATE PROCEDURE AverageSalary( OUT average_salary NUMERIC(20,3) )
    BEGIN
       SELECT AVG( Salary )
       INTO average_salary
       FROM GROUPO.Employees;
    END;
  3. Create a variable to hold the procedure output. In this case, the output variable is numeric, with three decimal places.

    CREATE VARIABLE Average NUMERIC(20,3);
  4. Call the procedure using the created variable to hold the result:

    CALL AverageSalary( Average );
  5. If the procedure was created and run properly, the Interactive SQL Messages tab does not display any errors.

  6. To inspect the value of the variable, execute the following statement:

    SELECT Average;
  7. Look at the value of the output variable Average. The Results tab in the Results pane displays the value 49988.623 for this variable, the average employee salary.

Example 2: Returning the results of a single-row SELECT statement

  1. Start Interactive SQL and connect to the SAP Sybase IQ sample database. You must have the CREATE PROCEDURE system privilege and either SELECT privilege on the Customers table or the SELECT ANY TABLE system privilege.

  2. Execute the following statement to return the number of orders placed by a given customer:

    CREATE PROCEDURE OrderCount( 
       IN customer_ID INT,
       OUT Orders INT )
    BEGIN
       SELECT COUNT(SalesOrders.ID)
          INTO Orders
       FROM GROUPO.Customers
          KEY LEFT OUTER JOIN SalesOrders
       WHERE Customers.ID = customer_ID;
    END;
  3. Test this procedure using the following statements, which show the number of orders placed by the customer with ID 102:

    CREATE VARIABLE orders INT;
    CALL OrderCount ( 102, orders );
    SELECT orders;
Notes for Example 2
  • The customer_ID parameter is declared as an IN parameter. This parameter holds the customer ID passed in to the procedure.

  • The Orders parameter is declared as an OUT parameter. It holds the value of the orders variable returned to the calling environment.

  • No DECLARE statement is necessary for the Orders variable as it is declared in the procedure argument list.

  • The SELECT statement returns a single row and places it into the variable Orders.