sql >> Database teknologi >  >> RDS >> Sqlserver

Er det muligt at lave en Indsæt i lagret procedure?

Du bliver nødt til at gøre et par ting for at få dette i gang, da din parameter får flere værdier, skal du oprette en tabeltype og få din butiksprocedure til at acceptere en parameter af den type.

Da du sender en TABLE som en parameter skal du oprette en TABLE TYPE noget som følger

TABELTYPE

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

Lagret procedure for at acceptere denne typeparameter

 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

UDFØR PROC

Deklarer en variabel af den type, og udfyld den med dine værdier.

 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. Hvordan opdager man, om en streng indeholder mindst et tal?

  2. Få variabel MIN-dato baseret på markør i rækken

  3. Omdøb SA-kontoen i SQL Server (T-SQL-eksempel)

  4. hvordan man migrerer mysql-data til ElasticSearch i realtid