私はこれに対するいくつかの回答を高く評価していますが、この種の操作をSQLで実行することに関するドキュメントは見つかりませんでした。基本的に、私は1つのクエリを実行するには大きすぎるパラメータリストを持っているので、私の最初の考えは、このパラメータのリストを分割し、パラメータリストのサブセットを取る単一のSQLスクリプトを作成し、すべての結果を1つのテーブルに追加します。複数のテーブルクエリの結果の追加
最初のクエリが返すすなわち、...
- id | DeviceName
- 00 201341
- 01 324232
- ... ...
秒1は...
- id | DeviceName
- 02 253242
- 03 234234
- ... ...
を返し、目標はすべてのこれらの結果は、1つの大きなテーブルに統合/追加することですその中のすべての値を持っています。
同じスクリプト内でSQLでこれを行うことはできますか?私はこのようなMSDNの記事を見つけましたが、これが本当に達成しようとしているのかどうかは分かりません。 https://msdn.microsoft.com/en-us/library/ethytz2x.aspx
私もstackoverflowの周りを検索しようとしましたが、私は全く同じ問題のように聞こえるものは見つけられませんでした。
私はSQLのエキスパートではないので、参加や組合の仕組みが分からないことがありますか?私はそれらを使って、異なる列の情報を1つのテーブルに結合しましたが、行を追加するのはそれほどではありませんでした。
編集: は私が扱ってるかのより具体的な例を与えるために、これは基本的に私はあまりにも多くのパラメータを避けるために変更しようとしているスクリプトです...
<sql-query name="GetMyDogsStatus">
<query-param name="DogIds" type="Guid"/>
<return-scalar column="status" type="Guid"/>
<![CDATA[
DECLARE @DogIds dbo.EntityIds
INSERT INTO @DogIds (dogID)
SELECT dogID from Dogs
WHERE dogID in (:DogIds)
DECLARE @tempId uniqueidentifier
DECLARE @dogStatus varchar(255)
DECLARE @InjuredDogIds dbo.EntityIds
DECLARE cur CURSOR FOR
SELECT dogId from @DogIds
OPEN cur
FETCH next from cur
INTO @tempId
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @dogStatus = null
SELECT TOP 1 @dogStatus = ev.[Delete Status]
FROM EventsHistory ev
WHERE dogId = @tempId
AND ev.[Delete Status] IS NOT NULL
AND ev.[Delete Status] != ''
AND ev.[Delete Status] != 'Pending'
ORDER BY [Time Deleted] DESC
if(@dogStatus is not null and not (@dogStatus='healthy' or @dogStatus='incomplete health assessment'))
insert into @InjuredDogIds (dogId) values (@tempId)
FETCH next from cur
INTO @tempId
END
CLOSE cur
DEALLOCATE cur
SELECT dogid as 'status' FROM @InjuredDogIds
]]>
この例ではテーブル名を入れ替えているのでタイプミスがあるかもしれません。
パラメータリストが大きすぎるとはどういう意味ですか?パラメータ化されたクエリを作成しており、許可されているパラメータの最大量を超えているということですか?もしそうなら、あなたの質問は完全に間違って行われています。あなたは決してその限界に近いところに決して乗るべきではありません。それが他のものであれば、あなたがここで何をしようとしているのかをより明確に説明する必要があります。 –
また、これはMSDNリンクのSQLサーバーだとは思っていますが、実際はわかりません。どのDBMSを実際に使用していますか? –
データベースの一時テーブルを作成したパラメータのリストを取得しないとどうなりますか。一括挿入を使用して、テンポラリテーブルに基づく制限を使用してクエリを実行します。この方法では、特定のクエリにパラメータを渡す必要はありません – xQbert