이 요구 사항의 이유는 너무 길기 때문에 관련이 없습니다.SQL Server - Insert 문에있는 동적 열 수
나는 폭이 넓은 테이블 Table_1
과 256 열을 가지고 있으며 모두 NVARCHAR(512)
이며 null을 허용합니다.
반면 동적 선택이 내장 된 문자열이 있는데, 경우에 따라 다른 수의 열을 생성합니다.
쿼리 결과를 Table_1
에 삽입해야합니다.
문제점은 결과를 삽입 할 열을 명시 적으로 언급하거나 쿼리 결과가 대상 테이블의 구조와 일치해야한다는 점입니다. 예를 들어
,의를하자 :
DECLARE @Table_1 TABLE (Field_1 NVARCHAR(512) ,
Field_2 NVARCHAR(512) ,
Field_3 NVARCHAR(512) ,
Field_4 NVARCHAR(512) ,
Field_5 NVARCHAR(512) ,
Field_6 NVARCHAR(512) ) ;
과 같은 쿼리 : 이제
DECLARE @_My_Query NVARCHAR(1000) = '
SELECT Name Field_1 ,
Street Field_2 ,
Phone Field_3
FROM My_Table
';
을, 나는 할 수 없습니다
INSERT INTO @Table_1
EXECUTE sp_executesql @_My_Query ;
을가 불일치에 대해 불평 때문에 열. (Field_1,Field_2,Field_3)
도 다른 쿼리가 다른 수의 열을 필요로하기 때문에 하드 코딩 할 수 없습니다.
모든 제안을 매우 높이 평가하겠습니다.
편집 : KrazzyNefarious, 제론 Mostert 및 Damien_The_Unbeliever에 의해 게시 된 의견에 답변 :
내가 쿼리뿐만 아니라 계산에 의해 반환 된 필드의 밝은 전망을 가지고 않습니다.
내가 열 및 내용의 변수 번호 CSV 파일의 생성을 지원한다 일하고 있어요 시스템을 다음과 같이
는내가 구현하기 위해 노력하고있어 기능입니다.
결과 데이터를 생성하는 쿼리는 결과의 모든 열을 설명하는 테이블과 함께 상위 계층에서 준비되고 저장 프로 시저 (문자열로)로 전송됩니다 (예 : 서수 위치, 필드 이름, 데이터 유형, Excel 첫 행의 제목 등).
내가 처리하고있는 절차는 쿼리 문자열을 취하여 결합 된
INSERT INTO Table_1 EXECUTE sp_executesql @_My_Query
을 실행합니다. 이 작업이 완료되면 각 필드를 검사하는 메커니즘 (예 : 필요할 때마다"
을 추가)은 데이터의 출처에 대한 염려없이 Table_1의 내용을 처리 할 수 있습니다.
나는 접근 방식의 추함 게다가, 성능 및 추가 문제에 영향을 미치는, 이후 임시 테이블을 사용하지 않도록하는 것을 선호 (사용, 충돌 등 후 기록을 삭제해야합니다).
동적 쿼리가 반환 할 수있는 최대 열 수는 얼마입니까? – KrazzyNefarious
필드를 매핑하는 방법을 어떻게 알고 있습니까? 적어도 그 이름은 서신에 맞습니까? –
"... 동적 선택이 내장 된 문자열이 있습니다."- 추가 된 열의 수를 추적 할 수 있도록 * 해당 문자열을 구성하는 프로세스를 변경할 수 있습니까? 질의 텍스트가 포함 된 문자열에서부터 시작하여 열 수를 결정하기 위해 구문 분석을 시도하면 너무 복잡한 것처럼 보입니다. –