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

È possibile eseguire una procedura memorizzata Inserisci in?

Dovrai fare un paio di cose per farlo funzionare, dal momento che il tuo parametro sta ottenendo più valori, devi creare un tipo di tabella e fare in modo che la procedura del negozio accetti un parametro di quel tipo.

Dal momento che stai passando una TABLE come parametro dovrai creare un TIPO DI TABELLA qualcosa come segue

TIPO DI TABELLA

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

Procedura archiviata per accettare quel parametro di tipo

 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

ESEGUI PROC

Dichiara una variabile di quel tipo e popolala con i tuoi valori.

 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