0

1つの列(ステータス)があり、値は待機中またはon_processまたはfinishedになります。velueが待機しているかどうかを確認するので、最大数を取得し(たとえば、waiting1、waiting2->したがって、最大値はwaiting2)、最大値を+1して、次のステータスはwaiting3になります。

col_status
waiting1waiting2on_process 終了 ......。
_
_

これは私のコードです:

create PROCEDURE SP_queue
AS
BEGIN
    DECLARE @NEWID VARCHAR(5);
    select @NEWID = max(convert(int,SUBSTRING(status, 8, 2)))  FROM myTable

SELECT 'Waiting'+convert(VARCHAR, @NEWID+1)
END

ただし、列に別の値(on_processなど)がある場合はエラーが発生します。ifステートメントを使用してチェックする方法、値が待機中の場合は最大値を取得する方法、値がon_processの場合は誰でも確認できます。 /終了してから何もしません。

ありがとう..

4

2 に答える 2

1

where条件で試してください:

SELECT
  @NEWID = max(convert(int,SUBSTRING(status, 8, 2)))  
FROM myTable
WHERE [status]='Waiting'
于 2013-01-03T09:38:53.600 に答える
0

文字列を使って数字に変更します。状態ごとにいくつかの特別な値を設定します。100未満は待機以外の何かであり、100、101、102、...からは待機チェーンです。それははるかに簡単でクリーンになります。

于 2013-01-03T09:28:54.527 に答える