sql >> Base de Datos >  >> RDS >> Sqlserver

¿Es posible hacer una inserción en el procedimiento almacenado?

Deberá hacer un par de cosas para que esto funcione, ya que su parámetro obtiene múltiples valores, necesita crear un tipo de tabla y hacer que su procedimiento de almacenamiento acepte un parámetro de ese tipo.

Dado que está pasando una TABLE como parámetro, deberá crear un TIPO DE TABLA algo como lo siguiente

TIPO DE MESA

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

Procedimiento almacenado para aceptar ese parámetro de 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

EJECUTAR PROC

Declare una variable de ese tipo y rellénela con sus valores.

 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