Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Est-il possible de faire une procédure stockée Insérer dans ?

Vous devrez faire quelques choses pour que cela fonctionne, puisque votre paramètre reçoit plusieurs valeurs, vous devez créer un type de table et faire en sorte que votre procédure de magasin accepte un paramètre de ce type.

Puisque vous passez un TABLE en tant que paramètre, vous devrez créer un TYPE DE TABLE comme suit

TYPE DE TABLE

CREATE TYPE dbo.Prco_Table AS TABLE 
 (
    [Val1]         Data Type
    [Val2]         Data Type
  )
 GO

Procédure stockée pour accepter ce paramètre de type

 CREATE PROCEDURE mainValues 
 @TableParam Prco_Table READONLY   --<-- Accepts a parameter of that type 
 AS                                  -- Note it is ReadOnly 
 BEGIN
    SET NOCOUNT ON;
  /* do your insert from this parameter or other cool stuff  */

  INSERT INTO Target_Table (Col1, Col2)
  SELECT [Val1] , [Val2]
  FROM  @TableParam    --<-- Table Type variable


END

EXÉCUTER LA PROC

Déclarez une variable de ce type et remplissez-la avec vos valeurs.

 DECLARE @Table ClaimData(      --<-- Declare a variable of your type
          [Val1]         Data Type
          [Val2]         Data Type
                         ); 

 -- Populate the variable
   INSERT INTO @Table ([Val1],[Val2])
   SELECT testdesc, testoption
   FROM tableA
   WHERE testoption = 1

  EXECUTE mainValues  @Table --<-- Pass this variable of Table Type