CALL statement

Description

Invokes a procedure.

Syntax

Syntax 1

[variable = ] CALL procedure-name ( [ expression] [, ...] )

Syntax 2

[variable = ] CALL procedure-name ( [ parameter-name = expression ] [, ... ] )

Examples

Example 1

CALL sp_customer_list()
CREATE PROCEDURE OrderCount (IN customer_ID INT, OUT Orders INT)
BEGIN
SELECT COUNT("DBA".sales_order.id)
INTO Orders
FROM "DBA".customer
KEY LEFT OUTER JOIN "DBA".sales_order
WHERE "DBA".customer.id = customer_ID ;
END
go
-- Create a variable to hold the result
CREATE VARIABLE Orders INT
go

-- Call the procedure, FOR customer 101
-- -----------------------------
CALL OrderCount ( 101, Orders) 
go
--------------------------------
--  Display the result
SELECT Orders FROM DUMMY 
go

Usage

The CALL statement invokes a procedure that has been previously created with a CREATE PROCEDURE statement. When the procedure completes, any INOUT or OUT parameter values will be copied back.

The argument list can be specified by position or by using keyword format. By position, the arguments will match up with the corresponding parameter in the parameter list for the procedure. By keyword, the arguments are matched up with the named parameters.

Procedure arguments can be assigned default values in the CREATE PROCEDURE statement, and missing parameters are assigned the default value, or, if no default is set, NULL.

Inside a procedure, a CALL statement can be used in a DECLARE statement when the procedure returns result sets (see Chapter 8, “Using Procedures and Batches” in the Sybase IQ System Administration Guide).

Procedures can return an integer value (as a status indicator, say) using the RETURN statement. You can save this return value in a variable using the equality sign as an assignment operator:

CREATE VARIABLE returnval INT ;
returnval = CALL proc_integer ( arg1 = val1, ... )

Side effects

None.

Standards

Permissions

Must be the owner of the procedure, have EXECUTE permission for the procedure, or have DBA authority.

See also