Tôi đang cố gắng sử dụng SQL động lần đầu tiên - Bây giờ tôi hiểu ý chính của nó ở mức độ nào đó, tuy nhiên, cố gắng nhập tham số vào bảng tạm thời bằng cách sử dụng SQL động Tên cột "khi tôi chỉ đơn giản là cố gắng để nhập này như văn bản không có ý định trở thành một cột.Tên cột không hợp lệ sử dụng SQL động
Trên một mặt lưu ý giá trị của nó tôi nhắc tôi đang chạy trên SQL Server 2005.
Đây là truy vấn thực hiện của tôi
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'''
Nhiều cảm ơn trướ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
phiên bản nào là u sử dụng? nó hoạt động hoàn toàn tốt đẹp ở cuối của tôi. – BNN
Chỉ cần nhớ để thêm rằng trong - Tôi đang chạy SQL Server 2005 tiếc là – user3482471
u có thể cập nhật câu hỏi ur, gây nhầm lẫn của nó đến nơi để thêm. – BNN