sql >> Databasteknik >  >> RDS >> Sqlserver

Är det möjligt att göra en Infoga i lagrad procedur?

Du måste göra ett par saker för att få igång detta, eftersom din parameter får flera värden måste du skapa en tabelltyp och få din butiksprocedure att acceptera en parameter av den typen.

Eftersom du skickar en TABLE som en parameter måste du skapa en TABELLTYP något enligt följande

BORDSTYP

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

Lagrad procedur för att acceptera den typparametern

 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

UTÖVER PROC

Deklarera en variabel av den typen och fyll i den med dina värden.

 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


  1. Skapa och kör funktion i SQL Server

  2. Vad är det enklaste sättet att göra en kolumn LÄSENDAST i Oracle?

  3. Lagra och indexera YAML med PostgreSQL, med Javascript lib eller återanvändbara funktioner?

  4. SQLAlchemy, Declarative, PostgreSQL:kan inte skapa tabeller