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. SQL Server(T-SQL)でデータベースメールの既定のパブリックプロファイルを作成する

    2. ストアド プロシージャから最後の選択結果のみを返す

    3. SQL Server 2008で許可される結合の最大数はいくつですか?

    4. SQL構文エラー-Haversine式