Я добавляю раздел к некоторому коду поставщика, чтобы создать текстовый файл из данных в таблице temp и отправить его в сетевую папку. Таблица temp: #PickListЗапрос SQL Server 2008 в текстовый файл: bcp, динамический SQL, временные таблицы и переменные таблицы
Я создал тип таблицы для переменной таблицы, поэтому я могу передать ее как параметр динамическому SQL, но это, в свою очередь, необходимо передать в bcp, который создает текстовый файл , Это то, что я до сих пор:
DECLARE @strFileLocation VARCHAR(1000)
DECLARE @strFileName VARCHAR(1000)
DECLARE @bcpCommand VARCHAR(8000)
DECLARE @strSQL VARCHAR(2000)
SET @strFileLocation = '\\phaal\FTP\LocalUser\LIFT01\inbox\'
SET @strFileName = 'BPL' + @Job + '-' + CAST(@Suffix AS VARCHAR(20)) + '-' +
CAST(@StartingOperNum AS VARCHAR(20)) + CAST(DATEPART(hh,GETDATE()) AS
VARCHAR(10)) + CAST(DATEPART(mi,GETDATE()) AS VARCHAR(10)) +
CAST(DATEPART(ss,GETDATE()) AS VARCHAR(10)) + '.txt'
DECLARE @tblLeanLiftData AS [dbo].[BWT_LeanLiftPickTableType]
INSERT INTO @tblLeanLiftData (intSeq, strText)
SELECT 0, @Job + '-' + CAST(@Suffix AS VARCHAR(20)) + '-' +
CAST(@StartingOperNum AS VARCHAR(20))
UNION
SELECT det_JobSequence, det_JobMatlItem + ':' + det_LotDescription + ',-,' +
CAST(det_QtyToPick AS VARCHAR(20))
FROM #PickList
SET @strSQL = 'EXEC sp_executesql N''SELECT strText FROM @tblLeanLiftData
ORDER BY intSeq'', N''@tblLeanLiftData LeanLiftPickTableType READONLY'',
@[email protected]'
SET @bcpCommand = 'bcp "' + @strSQL + '" queryout "'
SET @bcpCommand = @bcpCommand + @strFileLocation + @strFileName + '" -T -c'
EXEC master..xp_cmdshell @bcpCommand
Когда я EXEC код, я получаю:
SQLState = 37000, NativeError = 137
Ошибка = [Microsoft] [SQL Server Native Client 10.0 ] [SQL Server] Должен объявить скалярную переменную «@tblLeanLiftData».
SQLState = 37000, NativeError = 8180
Ошибка = [Microsoft] [SQL Server Native Client 10.0] [SQL Server] Операторы не могут быть подготовлены.
NULL
Таким образом, таблица переменных по-прежнему выходит за рамки.
Я надеялся, что кто-то со свежими глазами может определить, где я поступил неправильно или альтернативный маршрут, или если это просто невозможно?
Это немного обоюдоострый меч, потому что я пробовал разные способы, и временная таблица или переменная таблицы заканчиваются из-за пределов видимости.
Извините, Алекс, я никогда не отвечал на ваш ответ. Да, спасибо ... это определенно помогло. –
@MarkMcArdle благодарит за него, это стоило ждать :) –