Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー SQL の使用法 » ストアドプロシージャー、トリガー、バッチ、ユーザー定義関数 » プロシージャー、トリガー、ユーザー定義関数、バッチのカーソル

 

プロシージャー、トリガー、ユーザー定義関数、バッチ内の位置付け更新

次に、SELECT 文で更新可能なカーソルを使用するプロシージャーの例を示します。次の例では、ストアドプロシージャー言語を使用して、ローに対して位置付け更新を実行する方法を示しています。



CREATE PROCEDURE UpdateSalary( 
  IN employeeIdent INT, 
  IN salaryIncrease NUMERIC(10,3) )
BEGIN 
-- Procedure to increase (or decrease) an employee's salary
  DECLARE err_notfound
      EXCEPTION FOR SQLSTATE '02000';
  DECLARE oldSalary NUMERIC(20,3);
  DECLARE employeeCursor 
    CURSOR FOR SELECT Salary from Employees
               WHERE EmployeeID = employeeIdent
    FOR UPDATE;
  OPEN employeeCursor;
  FETCH employeeCursor INTO oldSalary FOR UPDATE;
  IF SQLSTATE = err_notfound THEN
    MESSAGE 'No such employee' TO CLIENT;
  ELSE
    UPDATE Employees SET Salary = oldSalary + salaryIncrease 
      WHERE CURRENT OF employeeCursor;
  END IF;
  CLOSE employeeCursor;
END;

上のストアドプロシージャーを呼び出すには、次の文を入力してください。

CALL UpdateSalary( 105, 220.00 );