Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Възможно ли е да се направи Insert Into съхранена процедура?

Ще трябва да направите няколко неща, за да задействате това, тъй като вашият параметър получава множество стойности, трябва да създадете тип таблица и да накарате процедурата ви за съхранение да приема параметър от този тип.

Тъй като предавате TABLE като параметър ще трябва да създадете TABLE TYPE нещо както следва

ТИП ТАБЛИЦА

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

Съхранена процедура за приемане на този тип параметър

 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

ИЗПЪЛНЕНИЕ НА ПРОЦЕДУРА

Декларирайте променлива от този тип и я попълнете с вашите стойности.

 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте SERVERPROPERTY(), за да получите информация за сървъра в SQL Server

  2. Изберете стойност при условие в SQL Server

  3. Ограничете редовете, върнати в заявка на SQL Server, като използвате клаузата TOP

  4. Кодиране на SQL_Latin1_General_CP1_CI_AS в UTF-8

  5. как да получите достъп до localDB от Windows Service