7

Temp Table の代わりに Table Variable を使用したいのですが、私の主なクエリ構成は Dynamic です。動的クエリは一重引用符で囲まれているため、@TableVariable からデータを取得するにはどうすればよいですか。一部のパラメーターは後で追加されるため、動的クエリを削除したくありません。

たとえば、次はエラー コードです。動的クエリにテーブル変数を書き込んだところです。

/*Declare Table Variable*/
DECLARE @TempVehicles TABLE
    (
        [VehicleID] INT
    )   
/*Insert data into Table Variable*/
INSERT INTO @TempVehicles
(
    [VehicleID]
)
SELECT  VehicleID
FROM tbl_Vehicles

/*Dynamic Query and Main SQL Construction*/
DECLARE @SQL NVARCHAR(MAX)
SET @SQL ='SELECT Cust_ID,A.VehicleID,GISInfo 
           FROM @TempVehicles A INNER JOIN tbl_GISData B ON A.VehicleID=B.VehicleID'

EXECUTE SP_EXECUTESQL @SQL

これで、私を助けてください。

前もって感謝します。

4

2 に答える 2

11

これを試して :

CREATE TYPE IntegerTableType AS TABLE (ID INT);
go

DECLARE @TempVehicles IntegerTableType; 

INSERT  @TempVehicles
values (1);





DECLARE @SQL NVARCHAR(MAX);
SET @SQL ='SELECT * 
           FROM @TempVehicles;';


EXECUTE SP_EXECUTESQL @SQL,N'@TempVehicles IntegerTableType READONLY',
@TempVehicles;
于 2013-05-06T07:16:22.443 に答える
4

別の解決策として、変数に格納する代わりに #TempVehicles を使用できます。

SELECT  VehicleID 
    into #TempVehicles
FROM tbl_Vehicles

/*Dynamic Query and Main SQL Construction*/
DECLARE @SQL NVARCHAR(MAX)
SET @SQL ='SELECT Cust_ID,A.VehicleID, GISInfo 
           FROM #TempVehicles A INNER JOIN tbl_GISData B ON A.VehicleID=B.VehicleID; 
           Drop Table #TempVehicles'

EXECUTE SP_EXECUTESQL @SQL

それがあなたの要件を満たしているかどうか試してみてください。

于 2013-05-06T07:15:30.373 に答える