【问题标题】:Error occurred in executing Table type parameter执行表类型参数时出错
【发布时间】:2017-06-14 06:43:56
【问题描述】:

我正在尝试使用带有以下代码的 BizTalk 将数据插入表中。但我面临错误,因为“程序或函数 Emp_Details 指定了太多参数。”

有人可以帮我解决同样的问题吗?

ALTER PROCEDURE [dbo].[Emp_Details]

                (@InsertDetails InsertDetailsType readonly)
    AS
    Begin 

    Truncate table [dbo].[Emp_Details]

          INSERT INTO [dbo].[Emp_Details]
               (
                [NAME],
                [DESCRIPTION],
                [EMPID]

            )
        select 

                [NAME],
                [DESCRIPTION],
                [EMPID]
    from @InsertDetails;


    Begin
    if exists(select 1 from [dbo].[Emp_Details]where NAME='Raul')

    Delete from [Emp_Details]where NAME='Raul'

    End 

    end

【问题讨论】:

  • 你在哪里声明这个表类型@InsertAircraft
  • 已编辑..现在检查代码
  • 在第一条语句中,您截断 Emp_Details 表,然后为什么要使用 if 存在条件
  • 这是因为...虽然插入文件可能包含一行不需要的行...所以插入所有行...它会被删除
  • 您可以发布您用来调用存储过程的 BizTalk 架构吗?我怀疑您不会让 BizTalk 使用自定义数据库类型,您必须将 @NAME@DESCRIPTION@EMPID 作为单独的参数传递。事实上,这可能就是它正在做的事情,因此你得到了错误。

标签: sql-server biztalk biztalk-2013


【解决方案1】:

重新发布之前用于参考的相同示例代码。

USE <Database>
GO

/* This is a template table */
CREATE TYPE Emp_Details AS TABLE   
( [Name]        VARCHAR(100)  
, [Description] VARCHAR(100) 
, [Address]     VARCHAR(100));  
GO

/* The following is your Table Emp_Details which you must be having already*/
CREATE TABLE Emp_Details
( [Name]        VARCHAR(100)  
, [Description] VARCHAR(100) 
, [Address]     VARCHAR(100));  
GO 

/* Consider this as your Input Data i.e CSV file or Excel (Note: I have created a table for sample)*/
CREATE TABLE Emp_Details1
( [Name]        VARCHAR(100)  
, [Description] VARCHAR(100) 
, [Address]     VARCHAR(100));  
GO 


INSERT INTO Emp_Details1 VALUES ('John','Test','123')
INSERT INTO Emp_Details1 VALUES ('John1','Test1','1234')
INSERT INTO Emp_Details1 VALUES ('John2','Test2','1235')
GO

SELECT * FROM Emp_Details

/* Declare a variable that references the type. So when you reference a `TYPE` it takes the table template which we created previously*/  
DECLARE @Emp AS Emp_Details;  

/* Add data to the table variable. In your case push the data that you get into the @Emp */  
INSERT INTO @Emp ([Name], [Description], [Address])  
    SELECT [Name], [Description], [Address]
    FROM Emp_Details1;  

/* Pass the table variable data to a stored procedure. */  
EXEC [dbo].[Insert_Deatils]  @Emp;  
GO 

SELECT * FROM Emp_Details

【讨论】:

  • 我不明白这个
  • @Raul 在代码中添加了几个 cmets,如果您仍然无法理解,请解释一下代码的哪一部分。
猜你喜欢
  • 2018-02-10
  • 2021-12-11
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多