하나의 테이블 (또는 저장 프로 시저)에서 임시 테이블에 데이터를 삽입하려고합니다. 임시 테이블 열 개수가 원본 테이블 열 개수와 일치하지 않습니다. 시작 열에서 임시 테이블에 소스 데이터를 삽입하고 나머지 열은 문자열 열을 비 웁니다.다른 테이블의 테이블에 삽입해도 열 수가 일치하지 않습니다?
즉, Temp
테이블에 10 개의 열이 있고 소스 테이블에 3 개의 열만있는 경우 처음 3 개의 열을 임시 테이블에 삽입하고 나머지 7 개의 열은 비어 있거나 null입니다.
예 :
내가 실행하면CREATE TABLE #VarTemp(Col1 nvarchar(256), Col2 nvarchar(256), Col3 nvarchar(256),
Col4 nvarchar(256), Col5 nvarchar(256), Col6 nvarchar(256),
Col7 nvarchar(256), Col8 nvarchar(256), Col9 nvarchar(256),
Col10 nvarchar(256))
INSERT into #VarTemp
EXEC sp_FindStringInTable 'Nareshbhai%', 'dbo', 'UserstoClean';
SELECT * FROM #VarTemp
별도의
EXEC sp_FindStringInTable 'Nareshbhai%', 'dbo', 'UserstoClean';
내가
Constitid FirstName LastName email status pincode
3151502 Nareshbhai Desai [email protected] Inactive desai
오류를 얻고는
,321입니다 0 오류가 발생했습니다. 개체가 있는지 확인하십시오. (0 행 영향)메시지 0, 수준 11, 상태 0, 줄 0
현재 명령에서 심각한 오류가 발생했습니다. 결과가 있으면 폐기해야합니다. + @schema + 'SELECT * FROM'이 ':
sp_FindStringInTable
은 여기에 나타나는
ALTER PROCEDURE [dbo].[sp_FindStringInTable]
@stringToFind VARCHAR(100), @schema sysname, @table sysname
AS
DECLARE @sqlCommand VARCHAR(8000)
DECLARE @where VARCHAR(8000)
DECLARE @columnName sysname
DECLARE @cursor VARCHAR(8000)
BEGIN TRY
SET @sqlCommand = 'SELECT * FROM ' + @schema + '.' + @table + ' WHERE'
SET @where = ''
SET @cursor = 'DECLARE col_cursor CURSOR FOR
SELECT COLUMN_NAME
FROM ' + DB_NAME() + '.INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ''' + @schema + '''
AND TABLE_NAME = ''' + @table + '''
AND DATA_TYPE IN (''char'', ''nchar'', ''ntext'', ''nvarchar'', ''text'', ''varchar'')'
EXEC (@cursor)
OPEN col_cursor
FETCH NEXT FROM col_cursor INTO @columnName
WHILE @@FETCH_STATUS = 0
BEGIN
IF @where <> ''
SET @where = @where + ' OR'
SET @where = @where + ' ' + @columnName + ' LIKE ''' + @stringToFind + ''''
FETCH NEXT FROM col_cursor INTO @columnName
END
CLOSE col_cursor
DEALLOCATE col_cursor
SET @sqlCommand = @sqlCommand + @where
--PRINT @sqlCommand
EXEC (@sqlCommand)
END TRY
BEGIN CATCH
PRINT 'There was an error. Check to make sure object exists.'
IF CURSOR_STATUS('variable', 'col_cursor') <> -3
BEGIN
CLOSE col_cursor
DEALLOCATE col_cursor
END
END CATCH
GO