sql >> Databáze >  >> RDS >> Sqlserver

Je možné provést Vložit do uložené procedury?

Abyste toho dosáhli, budete muset udělat několik věcí, protože váš parametr získává více hodnot, musíte vytvořit typ tabulky a zajistit, aby vaše procedura obchodu akceptovala parametr tohoto typu.

Protože předáváte TABLE jako parametr budete muset vytvořit TABLE TYPE něco následovně

TYP TABULKY

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

Uložená procedura pro přijetí tohoto parametru typu

 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

PROVEĎTE PROC

Deklarujte proměnnou tohoto typu a naplňte ji svými hodnotami.

 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. MySQL Vyberte nejlepší časy kol při seskupení podle uživatelů

  2. Jak vytvořím seznam oddělený čárkami pomocí dotazu SQL?

  3. Jak MariaDB dosahuje globálního měřítka s Xpand

  4. Upozornění:mysql_result() [function.mysql-result]:Nelze přejít na řádek 0 na indexu výsledků MySQL 5 v profile.php na řádku 11