Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Съхранената процедура на SQL Server конвертира varchar в int

Можете да се възползвате от факта, че SQL Server 2008 вече поддържа типове таблици. Можете да дефинирате тип таблица и от страната на .net да конструирате DataTable и го предайте като параметър на вашата съхранена процедура. От страна на SP този параметър е от тип [какъвто и тип таблица да сте направили] Ето един пример.

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

След това можете да добавите позиции като параметър за вашата съхранена процедура

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

Във вашата база данни трябва да дефинирате тип таблица като

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

и във вашата съхранена процедура добавете

@MyPositions Positions Readonly

Сега можете да третирате @MyPositions като таблица във вашата процедура и сравнете с нея.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. smo възстановяване на база данни

  2. Как да създадете таблица с помощта на GUI в SQL Server - SQL Server / T-SQL урок, част 37

  3. Трябва да преобразувате върнатия тип DataTable в низ

  4. Как да посоча изчислени колони в таблица, които са базирани на друга колона в SQL Server?

  5. Как да генерирам заявка за актуализиране на динамична заявка (автоматично)?