sql >> Databasteknik >  >> RDS >> Sqlserver

Skickar DataTable till lagrad procedur som ett argument

Du kan ändra den lagrade proceduren för att acceptera en tabell värderad parameter som en ingång. Först måste du dock skapa en användardefinierad tabell TYPE som matchar strukturen i C# DataTable:

CREATE TYPE dbo.PersonType AS TABLE
(
    Name NVARCHAR(50), -- match the length of SomeTable.Column1
    Age INT
);

Justera din SPROC:

CREATE PROCEDURE dbo.InsertPerson
    @Person dbo.PersonType READONLY
AS
BEGIN
  INSERT INTO SomeTable(Column1, Column2) 
     SELECT p.Name, p.Age
     FROM @Person p;
END

I C#, när du binder datatabellen till PROC-parametern, måste du ange parametern som:

parameter.SqlDbType = SqlDbType.Structured;
parameter.TypeName = "dbo.PersonType";

Se även exemplet här Passing a Table-Valued Parameter till en lagrad procedur



  1. MySQL - Gör ett befintligt fält unikt

  2. Spela Kan inte ansluta till (PostgreSQL) databas [standard]

  3. FEL:mer än en rad returneras av en underfråga som används som uttryck

  4. SQL Server BIT Datatype – Ultimate Guide