sql >> Database >  >> RDS >> Sqlserver

Opgeslagen procedure van SQL Server converteer varchar naar int

U kunt profiteren van het feit dat SQL Server 2008 nu tabeltypen ondersteunt. U kunt een tabeltype definiëren en aan de .net-kant een DataTable maken en geef dat door als parameter aan uw opgeslagen procedure. Aan de SP-kant is die parameter van het type [wat voor tafeltype je ook hebt gemaakt] Hier is een voorbeeld.

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)); 

U kunt dan Posities toevoegen als parameter voor uw opgeslagen procedure

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

In uw database moet u een tabeltype definiëren als

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

en in uw opgeslagen procedure toevoegen

@MyPositions Positions Readonly

Nu kunt u @MyPositions . behandelen als een tabel in uw procedure en vergelijk ermee.



  1. Gewenste uitvoer met gegeven tabelgegevens

  2. UNION de resultaten van meerdere opgeslagen procedures

  3. Geen toestemming bij het opzetten van ruby ​​op rails

  4. Een gegevensbestand verwijderen uit een SQL Server-database (T-SQL)