Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ist es möglich, eine gespeicherte Prozedur einzufügen?

Sie müssen ein paar Dinge tun, um dies zum Laufen zu bringen, da Ihr Parameter mehrere Werte erhält, die Sie benötigen, um einen Tabellentyp zu erstellen und Ihre Speicherprozedur dazu zu bringen, einen Parameter dieses Typs zu akzeptieren.

Da Sie eine TABLE übergeben Als Parameter müssen Sie einen TABLE TYPE wie folgt erstellen

TABELLENTYP

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

Gespeicherte Prozedur zum Akzeptieren dieses Typparameters

 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

PROZ AUSFÜHREN

Deklarieren Sie eine Variable dieses Typs und füllen Sie sie mit Ihren Werten.

 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