0

FitNesse/dbFit は、1 つの ID 列を持つテーブルへの挿入と、その値を変数に返すことをサポートしていますか?

例えば:

create table TestTable ( ID int identity(1,1) )

!|Insert|TestTable|
|ID?              |
|>>TestID         |

次の例外が発生します。

System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near ')'.

これを達成する別の方法はありますか?

4

1 に答える 1

0

問題は Fitnesse ではなく、SQL エンジンにあります。SQL Server Management Studio で同じクエリを実行すると、同じエラーが発生します。set identity_insert onしたがって、実際に質問する必要がある質問を使用できないという制限がある場合、Fitnesse とは無関係に SQL Server に挿入可能なフィールドのないレコードを挿入する方法は? この StackOverflow の投稿は、簡単な答えを提供します。

INSERT INTO #TempTable DEFAULT VALUES

これを手にしたら、次はこれを Fitnesse にマッピングします。ここに1つの解決策があります:

!|execute|CREATE TABLE #TestTable ( ID int identity(1,1) )|

!|execute|INSERT INTO #TestTable DEFAULT VALUES|

!|query|SELECT TOP 1 @@IDENTITY [ID] FROM #TestTable|
|ID?                                                |
|>>TestID                                           |

Fitnesse の INSERT コマンドはデフォルトの構文をサポートしていないため、より一般的な EXECUTE コマンドに切り替えて挿入を行う必要があります。ただし、これは結果を返さないため、自動挿入された ID 値を直接収集することはできません。最後のクエリは、挿入されたばかりの ID 値を取得する 1 つの方法を提供します。

于 2012-09-16T20:54:23.993 に答える