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

SQL Server lagret procedure konverterer varchar til int

Du kan drage fordel af, at SQL Server 2008 nu understøtter tabeltyper. Du kan definere en tabeltype og på .net-siden konstruere en DataTable og send det som en parameter til din lagrede procedure. På SP-siden er denne parameter af typen [uanset hvilken tabeltype du har lavet] Her er et eksempel.

TotalPositions = [Some List] //of CSV List
DataTable Positions = new DataTable(); //Create the Datatype
Positions.Columns.Add("PositionID", typeof(int)); //
foreach (string sPos in TotalPositions.Split(','))
Positions.Rows.Add(int.Parse(sPos)); 

Du kan derefter tilføje positioner som en parameter for din lagrede procedure

SqlParameter Param = new SqlParameter();
Param.Value = Positions
Param.SqlDbType = SqlDbType.Structured;
Param.ParameterName = @Positions                    
command.Parameters.Add(Param);

I din database skal du definere en tabeltype som

CREATE TYPE [dbo].[Positions] AS TABLE(
    [Position] int NULL,
)
GO

og i din lagrede procedure tilføje

@MyPositions Positions Readonly

Nu kan du behandle @MyPositions som en tabel i din procedure og sammenlign med den.



  1. Hvordan finder man næsten lignende poster i sql?

  2. Læs XML-dokument gemt i SQL Server med tekstdatatype?

  3. Sender HTML-kode gennem JSON

  4. Databasebelastningsbalancering i skyen - MySQL Master Failover med ProxySQL 2.0:Part One (Deployment)