을 선택하십시오. 기본적으로 기존 테이블을 기반으로 임시 테이블을 만든 다음 임시 테이블에 값을 삽입하고 삽입 된 값을 선택할 수 있기를 원합니다.동적으로 임시 테이블을 만들고 임시 테이블에 삽입 한 다음
임시 테이블을 만들 수있는 부분이 있습니다. 그냥 삽입하고 양식을 선택하면 잘 작동하지 않습니다.
여기에 현재 코드가 있습니다.
(영향 44 행 (들))
(영향 1 행 (들))의 영향
(1 행 (들)
declare @table table
(
OrdinalPosition int,
ColumnName nvarchar(255),
DataType nvarchar(50),
MaxChar int,
Nullable nvarchar(5)
)
declare @i int
declare @count int
declare @colname nvarchar(255), @datatype nvarchar(50), @maxchar int
declare @string nvarchar(max)
declare @tblname nvarchar(100)
set @tblname='Projects'
set @string='create table #' + @tblname + ' ('
insert into @table
(
OrdinalPosition,
ColumnName,
DataType,
MaxChar,
Nullable
)
SELECT
ORDINAL_POSITION ,
COLUMN_NAME ,
DATA_TYPE ,
CHARACTER_MAXIMUM_LENGTH ,
IS_NULLABLE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tblname
set @i=1
select @count=count(*) from @table
while (@i<[email protected])
begin
select @colname=ColumnName from @table where [email protected]
select @datatype=DataType from @table where [email protected]
select @maxchar=MaxChar from @table where [email protected]
if (@maxchar is null)
begin
set @string = @string + @colname + ' ' + @datatype
end
else
begin
set @string = @string + @colname + ' ' + @datatype + '(' + cast(@maxchar as nvarchar(20)) + ')'
end
if (@[email protected])
begin
set @string = @string + ')'
end
else
begin
set @string = @string + ', '
end
set @[email protected]+1
end
select @string
exec(@string)
set @string='
insert into #Projects (pk_prID, prWASSN_ID, prProjectStatus, prBusinessUnit, prServiceLine, prStudyTypeCode, prStudyNumber, prTimePoint, prStudyDirector,
prGroupLeader, prBookedDate, prBookedAmount, prConsumed, prBudgetedHours, prFinalReport, prFinalYear, prFinalMonth, prStartQA,
prLabWorkStarted, prLabWorkCompleted, prProjImpDate, prCompanyName, prCompanyNumber, prIsFTE, prRevisedDeadlineDate, prProjectFinalized,
prBookedYear, prBookedMonth, prCRMQuoteID, prLineItemNumber, prDraftReport, prInternalTargetDeadlineDate, prProtocolSignedDate,
prDataToRWS, prRWSWorkStarted, prFirstDraftToPL, prFirstDraftToQA, prArchivedDate, prToPLForQACommentReview,
prAnticipatedProjectArchiveDate, prToQAWithPLCommentResponse, prProjectReactivatedDate, prQAFinishDate, prSecondDraftReportToClient)
select *
from cube.Projects'
select @string
exec (@string)
set @string='select * from #Projects'
exec (@string)
이
내가 얻을 에러입니다) 메시지 208, 수준 16, 상태 0, 줄 2 '#Projects'개체 이름이 잘못되었습니다. 메시지 208, 수준 16, 상태 0, 줄 1 '#Projects'개체 이름이 잘못되었습니다.
+1 정확히 똑같은 내용을 타이핑하는 중이었습니다. :) – Tomalak
끝내주게 # 두 번째를 더하여 굉장한. – DForck42
##가 전역 인 것을 기억하십시오. 프로세스 외의 다른 사람/프로세스가 액세스 할 수 있습니다. proc이 동시에 실행되거나 다른 누군가가 같은 이름의 글로벌 임시 테이블을 삭제하고 다시 작성하면 실제 문제가 발생할 수 있습니다. – HLGEM