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

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 文 » SQL 文 (E ~ O)

 

IF 文

この文は、SQL 文の条件付き実行を制御するために使用します。

構文
IF search-condition THEN statement-list
[ ELSEIF { search-condition | operation-type } THEN statement-list ] ...
[ ELSE statement-list ]
{ END IF | ENDIF }
備考

IF 文は制御文です。これを使うと search-condition が TRUE と評価する SQL 文の最初のリストを条件付きで実行できます。search-condition が TRUE と評価せず、ELSE 句が存在する場合、ELSE 句の中の statement-list が実行されます。

実行は END IF の後に記述されている最初の文から再開されます。

IF 文は IF 式とは異なります。

IF 文の構文と IF 式の構文を混同しないでください。

IF 式の詳細については、IF 式を参照してください。

パーミッション

なし

関連する動作

なし

参照
標準と互換性
  • SQL/2003   永続的ストアド・モジュール機能。

次のプロシージャは、IF 文の使い方を示します。

CREATE PROCEDURE TopCustomer2 (OUT TopCompany CHAR(35), OUT TopValue INT)
BEGIN
   DECLARE err_notfound EXCEPTION
   FOR SQLSTATE '02000';
   DECLARE curThisCust CURSOR FOR
   SELECT CompanyName, CAST(    sum(SalesOrderItems.Quantity *
   Products.UnitPrice) AS INTEGER) VALUE
   FROM Customers
   LEFT OUTER JOIN SalesOrders
   LEFT OUTER JOIN SalesOrderItems
   LEFT OUTER JOIN Products
   GROUP BY CompanyName;
   DECLARE ThisValue INT;
   DECLARE ThisCompany CHAR(35);
   SET TopValue = 0;
   OPEN curThisCust;
   CustomerLoop:
   LOOP
      FETCH NEXT curThisCust
      INTO ThisCompany, ThisValue;
      IF SQLSTATE = err_notfound THEN
         LEAVE CustomerLoop;
      END IF;
      IF ThisValue > TopValue THEN
         SET TopValue = ThisValue;
         SET TopCompany = ThisCompany;
      END IF;
   END LOOP CustomerLoop;
   CLOSE curThisCust;
END;