sql >> Database teknologi >  >> RDS >> Sqlserver

Sender DataTable til lagret procedure som et argument

Du kan ændre den lagrede procedure for at acceptere en tabel værdisat parameter som input. Først skal du dog oprette en brugerdefineret tabel TYPE, som matcher strukturen i C# DataTable:

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

Juster 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 til PROC-parameteren, skal du angive parameteren som:

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

Se også eksemplet her Bestå en tabel-vurderet Parameter til en lagret procedure



  1. Problem med forbindelsespool med MySQL ved hjælp af Hibernate og Apache DBCP

  2. behandling af et stort antal databaseposter med personsøgning bliver langsommere med tiden

  3. mysql i listen validerer kun første id i listen. måske et klat problem

  4. Hvordan henter man almindelige poster i den samme databasetabel gennem en enkelt SQL-forespørgsel?