簡體   English   中英

SQL Oracle中的條件

[英]If condition in SQL Oracle

Oracle SQL

我需要檢查一個條件(一個標志),然后執行SQL代碼。

它的語法是什么。 我看到了一些文檔,上面寫着我們需要聲明過程,有人可以幫助我獲取該語法以及與此相關的內容。

例如:

IF Flag = 1
    BEGIN
      select  productgroup,...
      from 
      join.. on 
      where
    END
ELSE
    BEGIN
        select  product
        from 
      join.. on 
      left join .. on
      where
    END

在您的PL / SQL塊中, IF Flag = 1 THEN select productgroup,... [INTO {variables here}] from join.. on where ...; ELSE select product [INTO {variables here}] from join.. on left join .. on where ...; END IF; IF Flag = 1 THEN select productgroup,... [INTO {variables here}] from join.. on where ...; ELSE select product [INTO {variables here}] from join.. on left join .. on where ...; END IF;

請注意,如果要聲明返回值,則查詢可能需要INTO子句。 但是,為了使用此結構,您必須確保查詢將返回僅1和1的行。 不多不少。

如果需要將值作為行的集合,則必須對游標進行除法。

->這只是一個匿名塊。 不是程序或功能。

DECLARE
  CURSOR C1 IS
    [YOUR FIRST QUERY HERE];

  CURSOR C2 IS
    [YOUR SECOND QUERY HERE];

[other variables]
BEGIN

 IF Flag = 1 THEN
   FOR REC_C1 IN C1 LOOP
     ....
   END LOOP;
 ELSE
   FOR REC_C2 IN C2 LOOP
     ....
   END LOOP;
 END IF;
END;
PROCEDURE check_condition (p_flag IN NUMBER)
IS
v_num NUMBER;
BEGIN

IF p_flag=1 THEN

SELECT COUNT(1)
  INTO v_num
  FROM table1
 WHERE 1=0
    AND ROWNUM=1;

    IF  v_num=0 THEN

    raise_application_error(-20101,'ERROR');
    END IF;

ELSIF p_flag=2 THEN
 NULL;
ELSE
NULL;
END IF;

END;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM