動的 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 を初めて使用するので、誰かがこれを手伝ってくれることを願っています。完全な解決策ではなく、いくつかのガイダンスが必要です。
助けていただければ幸いです:)