Próbuję użyć dynamicznego SQL po raz pierwszy - Teraz rozumiem jego sens w stopniu, w którym próbuje wprowadzić parametr do tabeli tymczasowej przy użyciu dynamicznego SQL i otrzymuję komunikat "Nieprawidłowy Nazwa kolumny "kiedy po prostu próbuję wprowadzić to jako tekst, który nie ma być kolumną.Nieprawidłowa nazwa kolumny przy użyciu dynamicznego SQL
Na marginesie swej wartości mi przywołujące Używam tego na SQL Server 2005.
To jest moje wykonanie kwerendy
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'''
Wiele z góry dzięki.
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
która wersja są u użyciu? działa doskonale na moim końcu. – BNN
Tylko pamiętaj, aby dodać, że w - Używam SQL Server 2005 niestety – user3482471
można zaktualizować ur pytanie, mylące, gdzie dodać. – BNN