0

動的 SQL の知識を深めるために解決しようとしている小さな SQL ベースの課題があります。

私の要件は次のとおりです。

次のようなテーブルを作成しました。

CREATE TABLE Prison_Doors
(
 DoorNum INT IDENTITY(1,1) PRIMARY KEY,
 DoorOpen BIT,
 DoorClosed BIT,
 Trips INT
 )
 GO

動的 SQL プロシージャを作成して、50 のドア番号を挿入し、それらを閉じたものとして割り当てる必要があります。

proc の期待される結果:

|DoorNum|DoorOpen|DoorClosed|Trips|
|-------|--------|----------|-----|
|   1   |    0   |     1    |null |
|-------|--------|----------|-----|
|---------All the way to 50-------|
|-------|--------|----------|-----|
|   50  |    0   |     1    |null |

これは私が書いたものですが、挿入されていません:

BEGIN
DECLARE @SQL VARCHAR(8000)
DECLARE @Index INT
SET @Index=1


WHILE (@Index<=50)
BEGIN
    SET @SQL= 'INSERT INTO Prison_Doors(DoorNum,DoorOpen,DoorClosed)
                    VALUES('+CAST(@Index AS VARCHAR)+',0,1),'
    SET @Index=@Index+1
END

SET @SQL = SUBSTRING(@SQL, 1, LEN(@SQL)-1)
EXEC(@SQL)

終わり

私が間違っていることを知りたいです。

これがすべて完了したら、別のループを実行してドア 1 から開始し、2 つおきのドアを変更して開き、トリップを 1 つに変更し、3 つのドアごとにインクリメントしてドアを開き、トリップが 2 になるようにする必要があります。このインクリメントはすべてのドアまで続きます。が開いており、移動回数が選択されます。

私は動的 SQL を初めて使用するので、誰かがこれを手伝ってくれることを願っています。完全な解決策ではなく、いくつかのガイダンスが必要です。

助けていただければ幸いです:)

4

2 に答える 2