여러 테이블을 생성하는 동적 스크립트를 만들려고합니다. 다음은 샘플입니다.동적 테이블을 생성하는 스크립트
--exec USP_Dynamic_tablescript
Create procedure USP_Dynamic_tablescript
as
DECLARE @SQLStmt nvarchar(3000)
DECLARE @table_name nvarchar(3000)
DECLARE @i int
set @i=1
while(@i<=3)
begin
set @table_name = '#tblSales' + convert(varchar(10),@i)
SET @SQLStmt = 'create TABLE ' + @table_name + '(' + ' CityId int , ' +
' SalesPersonId int , ' + ' SalesAmount numeric(10,2), ' +
' MetTarget nvarchar(2) ' + ') '+
' ON [PRIMARY] WITH (DATA_COMPRESSION = NONE)'
print @table_name
EXEC sp_executesql @SQLStmt
set @i = @i + 1
end
SELECT * from #tblSales1
INSERT INTO #tblSales1(CityId, SalesPersonId, SalesAmount, MetTarget)
VALUES (1, 101, 1650.00, 'Y')
이러한 임시 테이블에서 DML 문을 실행해야합니다.
내가 시도하면 오류가 발생합니다. 범위를 이해하는 데 도움이, 테이블이 성공적으로 만들어 지지만 어떻게 DML 작업을 실행할 수 있습니까?
메시지 208, 수준 16, 상태 0, 절차 USP_Dynamic_tablescript, 선 (31)
잘못된 개체 이름 '#의 tblSales1'. 내가 코멘트에서 언급 한 바와 같이
당신은 ** 동적 쿼리 안에 ** 임시 테이블 **를 만드는 * * 동적 쿼리 ** 세션 내에서만 액세스 할 수 있습니다. ** 동적 쿼리 외부에서 액세스 할 수 없습니다. –
[동적 SQL을 사용하여 임시 테이블을 만드는 중 오류가 있습니다.] (http://stackoverflow.com/questions/9338963)/임시 테이블을 사용하여 동적 SQL 생성 오류) – AHiggins
질문을 철회하고 싶다면 질문을 삭제하고 텍스트를 편집하지 마십시오. 그러면 기존 답변이 귀하의 질문과 관련이 없습니다. –