【问题标题】:How to view rows inserted in StoredProcedure's temporary table during SSIS package execution如何在 SSIS 包执行期间查看在 StoredProcedure 的临时表中插入的行
【发布时间】:2014-06-13 06:53:12
【问题描述】:
ALTER PROC [dbo].[StoredProcedure1] (@XMLRows XML)
AS
BEGIN
SET NOCOUNT ON

DECLARE @myTable TABLE
    (
     [FirstName] [nvarchar](50) NULL,
     [LastName] [nvarchar](50) NULL,
     [Gender] [char](1) NULL
    )

    Insert into @myTable
    (
    FirstName ,
    LastName ,
    Gender 
    )
    SELECT distinct
    FirstName
    ,LastName
    ,Coalesce(Gender,'') Gender
    FROM
    (
    SELECT
     items.value (N'FirstName[1]', 'nvarchar(50)') AS [FirstName]
    ,items.value (N'LastName[1]', 'nvarchar(50)') AS [LastName]
    ,items.value (N'Gender[1]', 'char(1)') AS [Gender]
    FROM @ExportData a
            CROSS APPLY XML_File.nodes('MyNode/Employee') AS NodeTable(Specs)
            OUTER APPLY XML_File.nodes('MyNode/Employee/StaffList') AS NodeTable1(items)
            OUTER APPLY XML_File.nodes('MyNode/Employee/OtherDetails') AS NodeTable2(items2)
            OUTER APPLY XML_File.nodes('MyNode/Employee/MoreDetailsHere') AS NodeTable3(items3)
            OUTER APPLY XML_File.nodes('MyNode/EvenMoreDetails') AS NodeTable4(items4)
    )myTable

END

我有上面存储的 StoredProcedure,我是从 SSIS 包调用的。执行包时,有什么方法可以查看插入到临时表@myTable 中的行。我正在解决一个错误,我想在我的包执行时查看@myTable 中的确切内容。

【问题讨论】:

  • 你为什么不能把它做成一个烫发表并检查值?
  • 为什么需要table?你不能只为你想要的数据创建一个view 吗?
  • 这只是一个更大的存储过程的一部分,我正在同一个 SP 中的临时表和另一个 perm 表之间进行连接,只是删除了该部分以使我发布的代码可读。跨度>

标签: sql sql-server stored-procedures ssis


【解决方案1】:

与您的存储过程分开。在您的数据库中创建另一个“真实”表。

CREATE TABLE MyTableLog
(
 [FirstName] [nvarchar](50) NULL,
 [LastName] [nvarchar](50) NULL,
 [Gender] [char](1) NULL
)

然后在您的存储过程执行期间,截断真实表,并用您的存储过程期间生成的内容重新填充它

ALTER PROC [dbo].[StoredProcedure1] (@XMLRows XML)
AS
BEGIN
SET NOCOUNT ON

    DECLARE @myTable TABLE (...)

    Insert into @myTable (...)
    SELECT distinct ...


    TRUNCATE TABLE MyTableLog
    INSERT INTO MyTableLog (FirstName, LastName, Gender)
    SELECT FirstName, LastName, Gender FROM @myTable

END

一旦您的 SPROC 通过 SSIS 包完成执行,您就可以简单地从任何查询窗口查询您的日志表。

SELECT FirstName, LastName, Gender FROM MyTableLog

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2017-08-14
    • 1970-01-01
    • 2013-07-16
    相关资源
    最近更新 更多