SQL Server 2005에서 저장 프로 시저를 작성하고 있습니다. 특정 시점에 다른 저장 프로 시저를 실행해야합니다. 이 호출은 동적이며, 그래서 난 평소와 같이 sp_executesql을 명령을 사용했습니다 :sp_executesql 및 테이블 출력
DECLARE @DBName varchar(255)
DECLARE @q varchar(max)
DECLARE @tempTable table(myParam1 int, -- other params)
SET @DBName = 'my_db_name'
SET q = 'insert into @tempTable exec ['[email protected]+'].[dbo].[my_procedure]'
EXEC sp_executesql @q, '@tempTable table OUTPUT', @tempTable OUTPUT
SELECT * FROM @tempTable
그러나 나는이 오류를 얻을 : 당신이 그 변수가 선언되어 볼 수 있듯이
Must declare the scalar variable "@tempTable".
합니다. 나는 documentation을 읽고 text, ntext 및 image 만 허용되는 것으로 보입니다. 어떻게하면 좋을까요?
PS : TEMPTABLE의 범위가 현재 프로 시저로 제한됩니다 @ I는 2005 년
오신 적이 2005 년 이후 잠시지만, @의 TEMPTABLE의 범위는 sp_executesql을 함께 할 아무것도하지 않는 현재 프로 시저가 아닌 executeSQL 절차 ... – Sparky
로 제한됩니다. 그것은 테이블 변수의 범위와 관련이 있습니다. 다음 일은 임시 테이블을 사용하는 것이지만 sp_executesql이 다른 스레드에서 실행되기 때문에 실패 할 것이라고 확신합니다. –