2

以下のように、SQLServer2005で一時テーブルを動的に作成したいと思います。

Create Table ##EmpMonthlyTimeReport
(
    EmpID UNIQUEIDENTIFIER,
    EmpName VARCHAR(100),
    TaskId UNIQUEIDENTIFIER,
    [07 Nov] NVARCHAR(10),
    [08 Nov] NVARCHAR(10),
    [09 Nov] NVARCHAR(10)
)

上記の##EmpMonthlyTimeReportテーブルでは、列[07 Nov]、[08 Nov]、[ 09Nov]は静的ではありません。彼らは別の機能を介して動的に作成しています。

したがって、 @ EmpMonthlyTimeReportという1つの変数で上記のテーブルを動的に構築し、構築されたSQL文字列を次のように実行しています。

EXEC(@EmpMonthlyTimeReport)

次のエラーが発生します。

Msg 50000, Level 16, State 1, Procedure SVS_WorkOnWeekends, Line 157
The name 'INSERT INTO ##EmpMonthlyTimeReport(EmpID, EmpName, TaskId)
SELECT EmpId, EmpName, TaskId FROM TableData 
SELECT * FROM ##EmpMonthlyTimeReport
DROP TABLE ##EmpMonthlyTimeReport' is not a valid identifier.
4

1 に答える 1

1

非常にばかげた回避策。

@EmpMonthlyTimeReport 変数宣言を VARCHAR(MAX) から NVARCHAR(MAX) に変更しました

それでおしまい。すべてが期待どおりに機能しています。

于 2012-11-07T08:39:35.950 に答える