Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Czy można wykonać procedurę wstawianą do składowanej?

Będziesz musiał zrobić kilka rzeczy, aby to osiągnąć, ponieważ twój parametr otrzymuje wiele wartości, musisz utworzyć typ tabeli i sprawić, by twoja procedura sklepu akceptowała parametr tego typu.

Ponieważ przekazujesz TABLE jako parametr będziesz musiał utworzyć TYP TABELI w następujący sposób

TYP TABELI

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

Przechowywana procedura akceptacji tego typu param

 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

WYKONAJ PROCJĘ

Zadeklaruj zmienną tego typu i wypełnij ją swoimi wartościami.

 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. SQL 2005 Czy mogę użyć słowa kluczowego jak w instrukcji case?

  2. maksymalny rozmiar wiersza przekroczony podczas kopiowania pola varbinary(max)

  3. SQL SELECT przyrostowy numer partii co X wierszy

  4. Przekształć wynik pionowy w tryb poziomy (T-SQL)

  5. tworzenie wyzwalaczy dla funkcji After Insert, After Update i After Delete w SQL