初めて動的SQLを使用しようとしていますが、動的SQLを使用して一時テーブルにパラメータを入力しようとしているにもかかわらず、列名であることを意図していないテキストとしてこれを入力しようとしています。側では 動的SQLを使用するカラム名が無効
は、私はSQL Server 2005の事前にこの私の実行クエリです
SELECT ARCHV_FLAG,PATNT_REFNO,ACTIVE_NAMES,AINPT_REFNO INTO #TEMP FROM ACTIVE_NAMES WHERE PATNT_REFNO = 1 AND ARCHV_FLAG = 'C'
Fix SET @SQL = 'SELECT ARCHV_FLAG,PATNT_REFNO,'''[email protected] +''' AS [ACTIVE_NAMES],'+ @PK + ' INTO #TEMP FROM ' + @TABLE + ' WHERE PATNT_REFNO = '+ CAST(@PATNT AS VARCHAR (100))+ ' AND ARCHV_FLAG = ''C'''
多くのおかげでこれを実行しています言及するその価値を注意してください。
DECLARE
@SQL NVARCHAR(4000),
@SQL1 NVARCHAR(4000),
@TABLE VARCHAR (100),
@PK VARCHAR (50),
@PATNT INT
SET @PATNT = 1
CREATE TABLE #TEMP
(
ARCHV_FLAG VARCHAR (1),
PATNT_REFNO INT,
TABLE_NAME VARCHAR (100),
PRIMARY_KEY INT
)
CREATE TABLE #TABLE
(NAME VARCHAR (100))
INSERT INTO #TABLE (NAME) VALUES ('ACTIVE_NAMES')
SELECT * FROM #TABLE
DECLARE Cur CURSOR FOR
SELECT NAME FROM #TABLE
OPEN Cur
FETCH NEXT FROM Cur INTO @TABLE
WHILE @@FETCH_STATUS = 0
BEGIN
SET @PK = (SELECT C.NAME FROM SYS.COLUMNS C
JOIN SYS.tables T ON C.object_id = T.object_id
WHERE T.name = @TABLE AND C.is_identity = 1)
SET @SQL = 'SELECT ARCHV_FLAG,PATNT_REFNO,'[email protected] +','+ @PK + ' INTO #TEMP FROM ' + @TABLE + ' WHERE PATNT_REFNO = '+ CAST(@PATNT AS VARCHAR (100))+ ' AND ARCHV_FLAG = ''C'''
EXEC SP_EXECUTESQL @SQL
select @sql
FETCH NEXT FROM Cur INTO @TABLE
END
CLOSE Cur
DEALLOCATE Cur
SELECT * FROM #TEMP
DROP TABLE #TEMP
DROP TABLE #TABLE
uが使用しているバージョン?それは私の最後に完璧に動作します。 – BNN
ちょうどそれを追加することを忘れないでください - 残念なことにSQL Server 2005を実行しています – user3482471
URの質問を更新することができます、そのどこに追加するのか混乱します。 – BNN