私は以下のストアドプロシージャを記述しました。 2つのテンポラリテーブルを作成する必要があります。 最初のテンポラリテーブルでは、私はカーソルを使用してIDを取得しているし、いくつかのクエリに基づいて2番目のテンポラリテーブルに挿入する必要があります。しかし、私は以下のエラーを取得します。 。 この状況で助けが必要です1つのストアドプロシージャで2つのテンポラリテーブルを作成するときに問題があります
データベースには、すでに「TempTable」という名前のオブジェクトがあります。
ALTER PROCEDURE [dbo].[GetDocumentByTrackID]
@idList nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @TrackId INT
--Temprary表1
CREATE TABLE TempTable(
ID INT
)
DECLARE @GetNextRecord cursor
INSERT INTO TempTable SELECT Value from dbo.fn_sqllist_to_table(@idList,';')
--Temprary表2
Create TABLE TracksNameID
(
ID INT,
Name nvarchar(100)
)
SET @GetNextRecord = cursor for select ID from TempTable
open @GetNextRecord
FETCH FROM @GetNextRecord into @TrackId
while @@FETCH_STATUS = 0
BEGIN
INSERT INTO TracksNameID
SELECT ID ,Name FROM dbo.TestTable
WHERE dbo.TestTable.TrackID = @TrackId
END
FETCH FROM @GetNextRecord into @TrackId
DROP TABLE TempTable
END
これは一時テーブルではありません。なぜこの '挿入 'のためにカーソルを使用していますか? –
ああ私は間違いを犯した。 カーソルの使用私はクエリを実行して2番目のテーブルに値を挿入しています。それは考えです。 – Shah
あなたは 'INSERT INTO TracksNameID SELECT ID、名前からdbo.TestTable tジョインdbo.fn_sqllist_to_table(@ idList、 ';')f ON t.TrackID = f.Value'を実行して、 '#temp'テーブルやカーソル。 –