2017-06-14 9 views
-1

J'essaie d'insérer des données dans une table en utilisant BizTalk avec le code ci-dessous. Mais je suis confronté à une erreur comme "procédure ou fonction Emp_Details a trop d'arguments spécifiés."Une erreur s'est produite lors de l'exécution du paramètre de type Table

Quelqu'un pourrait m'aider à résoudre le même problème?

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 
+0

où vous déclarez ce type de table @InsertAircraft –

+0

Edited..now vérifier le code – Superr

+0

Dans la première déclaration de votre table Emp_Details tronquer alors pourquoi vous allez car si existe état –

Répondre

-1

Rebondissement du même code d'exemple utilisé précédemment à titre de référence.

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 
+0

je n'ai pas compris cela – Superr

+0

@Raul avait ajouté quelques commentaires dans le code, si vous n'êtes toujours pas en mesure de le comprendre pouvez-vous s'il vous plaît expliquer quelle partie du code. – Joby