OR REPLACE 句
OR REPLACE を指定すると、新しいプロシージャーが作成されるか、同じ名前の既存のプロシージャーが置き換えられます。この句によって、プロシージャーの定義は変更されますが、既存のパーミッションは保持されます。使用中のプロシージャーを置き換えようとすると、エラーが返されます。
NO RESULT SET 句
このプロシージャーによって結果セットが返されないことを宣言します。この句は、プロシージャーが結果セットを返さないことを外部環境から知る必要がある場合に役立ちます。
WITH RECOMPILE 句
この句は、Transact-SQL との互換性を保つために実装されていますが、無視されます。SQL Anywhere は、常にデータベース起動後に初めて実行されたプロシージャーを再コンパイルし、コンパイルされたプロシージャーをデータベースが停止するまで保管します。
CREATE PROCEDURE showdept @deptname varchar(30)
AS
SELECT Employees.Surname, Employees.GivenName
FROM Departments, Employees
WHERE Departments.DepartmentName = @deptname
AND Departments.DepartmentID = Employees.DepartmentID;
次に、これに対応する Watcom SQL のプロシージャーを示します。
CREATE PROCEDURE showdept(in deptname
varchar(30) )
RESULT ( lastname char(20), firstname char(20))
ON EXCEPTION RESUME
BEGIN
SELECT Employees.Surname, Employees.GivenName
FROM Departments, Employees
WHERE Departments.DepartmentName = deptname
AND Departments.DepartmentID = Employees.DepartmentID
END;