2

これが理にかなっているかどうかはわかりませんが、既存の sproc を編集して変数を「Where」句に追加し、すべての値を返すか、値を何も返さないか、値に関係なくすべてのレコードを返すようにしようとしています。

Where 句で Case When/Then ステートメントを使用しています。

  WHERE 
      CASE (@work)
  WHEN 'Y' THEN part.corpid = ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )
  WHEN 'N' THEN part.corpid != ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )   
  ELSE part.corpid = *
  END

セットアップは、Y の場合は従業員とその家族のみを返し、N の場合は従業員またはその家族を返さず、変数が NULL の場合はすべてを返します。

ここで何を台無しにしているかわかりません。Y セクションの = でエラーが発生し続けます。

4

2 に答える 2

8

WHERE次の句を使用できるはずです。

WHERE 
(
  @work = 'Y'
  AND part.corpid IN ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )
)
OR
(
  @work = 'N'
  AND part.corpid NOT IN ( 'Work EMP' , 'Work EMP 10' , 'Work FAM' )
) 
OR
(
  @work is null 
  -- add other filters here if needed
  -- no need to include the part.corpid because all will be included
)
于 2013-01-04T17:47:03.667 に答える
0

これはオラクルの例です:

CASE grade 
  WHEN 'A' THEN dbms_output.put_line('Excellent');
  WHEN 'B' THEN dbms_output.put_line('Very Good');
  WHEN 'C' THEN dbms_output.put_line('Good');
  WHEN 'D' THEN dbms_output.put_line('Fair');
  WHEN 'F' THEN dbms_output.put_line('Poor');
  ELSE dbms_output.put_line('No such grade');
END CASE;
于 2013-01-04T19:22:30.820 に答える