-1

マシン ID 番号をクリーンアップするために他のストアド プロシージャで使用できるSQL Server 2000用の関数を作成しようとしています。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Description: The Purpose here is to just get the System (Chamber, Decay, Label, Tubing, etc.)
-- =============================================
CREATE FUNCTION [dbo].[fn_GetSysType] (@systemID varchar(50)) RETURNS varchar(50) AS
BEGIN
  declare @sysID varchar(50)
  set @sysID=LTrim(RTrim(@systemID))
  if (0<Len(@sysID)) begin
    set @sysID=(
      case when (0<CharIndex('Inspect', @sysID)) then 'Inspect'
*     case when (0<CharIndex('Label', @sysID)) then 'Label'
      case when (0<CharIndex('Tubing', @sysID)) then 'Tubing'
      case when (0<CharIndex('Expand', @sysID)) then 'Expand'
      case when (0<CharIndex('Decay', @sysID)) then 'Decay'
      case when (0<CharIndex('Chamber', @sysID)) then 'Chamber'
      case when (0<CharIndex('Water', @sysID)) then 'Water'
      case when (0<CharIndex('Sniff', @sysID)) then 'Sniff'
      case when (0<CharIndex('Packout', @sysID)) then 'Packout'
      case when (0<CharIndex('Shipping', @sysID)) then 'Shipping'
      else 'Unknown' end)
  end
  return @sysID
END
GO

これを保存しようとしたときのエラーメッセージは次のとおりです。

キーワード「case」付近の構文が正しくありません。

上のアスタリスクで。

私は何を取りこぼしたか?

4

2 に答える 2

4

一度だけ使用する必要がありますCASE

...
set @sysID=(
  case when (0<CharIndex('Inspect', @sysID)) then 'Inspect'
       when (0<CharIndex('Label', @sysID)) then 'Label'
       when (0<CharIndex('Tubing', @sysID)) then 'Tubing'
       when (0<CharIndex('Expand', @sysID)) then 'Expand'
       when (0<CharIndex('Decay', @sysID)) then 'Decay'
       when (0<CharIndex('Chamber', @sysID)) then 'Chamber'
       when (0<CharIndex('Water', @sysID)) then 'Water'
       when (0<CharIndex('Sniff', @sysID)) then 'Sniff'
       when (0<CharIndex('Packout', @sysID)) then 'Packout'
       when (0<CharIndex('Shipping', @sysID)) then 'Shipping'
  else 'Unknown' end)
...
于 2013-01-07T21:32:33.347 に答える
2

ケースの SQL Server 構文は次のとおりです。

set @sysID=(
      case when (0<CharIndex('Inspect', @sysID)) then 'Inspect'
           when (0<CharIndex('Label', @sysID)) then 'Label'
           when (0<CharIndex('Tubing', @sysID)) then 'Tubing'
           when (0<CharIndex('Expand', @sysID)) then 'Expand'
           when (0<CharIndex('Decay', @sysID)) then 'Decay'
           when (0<CharIndex('Chamber', @sysID)) then 'Chamber'
           when (0<CharIndex('Water', @sysID)) then 'Water'
           when (0<CharIndex('Sniff', @sysID)) then 'Sniff'
           when (0<CharIndex('Packout', @sysID)) then 'Packout'
           when (0<CharIndex('Shipping', @sysID)) then 'Shipping'
      else 'Unknown' end)

http://msdn.microsoft.com/en-us/library/ms181765.aspxを参照してください。

于 2013-01-07T21:33:40.627 に答える