sql >> Databáze >  >> RDS >> Sqlserver

SQL Server uložená procedura převést varchar na int

Můžete využít toho, že SQL Server 2008 nyní podporuje typy tabulek. Můžete definovat typ tabulky a na straně .net vytvořit DataTable a předejte to jako parametr vaší uložené proceduře. Na straně SP je tento parametr typu [bez ohledu na tabletype, které jste udělali] Zde je příklad.

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

Poté můžete připojit pozice jako parametr pro vaši uloženou proceduru

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

Ve vaší databázi musíte definovat typ tabulky jako

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

a do uložené procedury přidejte

@MyPositions Positions Readonly

Nyní můžete zacházet s @MyPositions jako tabulku ve vašem postupu a porovnejte s ní.



  1. Jak by se dal tento dotaz vylepšit?

  2. python a mysql na mac os x

  3. Proč mnoho tabulek ORACLE default 12c?

  4. Jak zkrátit TABLE v Oracle