use*_*747 1 ssis stored-procedures visual-studio-2010 sql-server-2012
我有一个问题-我想在存储过程中使用临时表是SQL Server,它将从SSIS包中执行。我读了一些技巧,然后尝试了一个(第一个答案):在SSIS中使用Temp表, 但是没有用。我有MS Visual Studio 2010,这个版本可以吗?这是我在存储过程中的代码:
CREATE PROCEDURE some_procedure
AS
SET NOCOUNT ON
IF 1 = 0
BEGIN
SELECT CAST(NULL AS int) as number
END
CREATE TABLE #some_table (number int)
INSERT INTO #some_table VALUES (250)
SELECT number FROM #some_table
Run Code Online (Sandbox Code Playgroud)
感谢您的任何建议或经验。
这是来自Visual Studio的错误消息:
数据流任务[OLE DB源[1]]时出错:SSIS错误代码DTS_E_OLEDBERROR。发生OLE DB错误。错误代码:0x80004005。OLE DB记录可用。来源:“ Microsoft SQL Server Native Client 11.0”结果:0x80004005说明:“由于过程'some_procedure'中的语句'INSERT INTO #some_table VALUES(250)'使用临时表,因此无法确定元数据。”
数据流任务[OLE DB源[1]]发生错误:无法从数据源中检索列信息。确保数据库中的目标表可用。
在SQL Server 2012中,如果使用临时表,则必须指定结果集。
这是sp_describe_first_result_set过程的问题,SSIS用于返回输出元数据。
例如
EXEC dbo.RptResults_StoredProcedure
Run Code Online (Sandbox Code Playgroud)
成为
EXEC dbo.RptResults_StoredProcedure
WITH RESULT SETS
((
Date NVARCHAR(10),
Location VARCHAR(12),
Department CHAR(1),
Shift CHAR(1),
ForecastSales DECIMAL(18,2),
ActualSales DECIMAL(18,2)
))
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请查看
| 归档时间: |
|
| 查看次数: |
2500 次 |
| 最近记录: |