Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Procedura składowana SQL Server konwertuje varchar na int

Możesz skorzystać z faktu, że SQL Server 2008 obsługuje teraz typy tabel. Możesz zdefiniować typ tabeli i po stronie .net skonstruować DataTable i przekaż go jako parametr do procedury składowanej. Po stronie SP ten parametr jest typu [niezależnie od tego, jaki typ tabeli utworzyłeś] Oto przykład.

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

Następnie możesz dodać pozycje jako parametr procedury składowanej

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

W swojej bazie danych musisz zdefiniować typ tabeli jako

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

i w procedurze składowanej dodaj

@MyPositions Positions Readonly

Teraz możesz leczyć @MyPositions jako tabelę w swojej procedurze i porównaj z nią.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest ciąg formatujący w programie SQL Server?

  2. Jak wyodrębnić wartości z kolumny i zaktualizować wynik w innej kolumnie?

  3. Dlaczego SQL Server automatycznie ignoruje puste miejsce na końcu?

  4. Szukasz dobrego przykładu niszczenia XML Bulk Insert dla SQL 2005

  5. Wdrażanie baz danych SQL Server z testów na żywo