sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server lagrad procedur konverterar varchar till int

Du kan dra fördel av att SQL Server 2008 nu stöder tabelltyper. Du kan definiera en tabelltyp och på .net-sidan konstruera en DataTable och skicka det som en parameter till din lagrade procedur. På SP-sidan är den parametern av typen [vilken tabelltyp du än har gjort] Här är ett exempel.

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 sedan lägga till positioner som en parameter för din lagrade procedur

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

I din databas måste du definiera en tabelltyp som

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

och i din lagrade procedur lägg till

@MyPositions Positions Readonly

Nu kan du behandla @MyPositions som en tabell i din procedur och jämför med den.



  1. php-kategori, underkategoriträd

  2. psycopg2 läcker minne efter stor fråga

  3. Ta bort en SQL-frågeresultatuppsättning

  4. mysqldump exporterar endast en tabell