簡體   English   中英

存儲過程中的日期時間參數

[英]DateTime Parameters in stored procedure

我有一個存儲過程插入到 SQL 服務器中的表中:

CREATE PROCEDURE ThemHocSinh
    @TenHS NVARCHAR(255),
    @NgaySinh DATETIME,
    @TenChaMe NVARCHAR(255),
    @SDTChaMe VARCHAR(16),
    @DiaChi NVARCHAR(255),
    @LopHC VARCHAR(6)
AS
    INSERT INTO dbo.HocSinh (MaHS, TenHS, NgaySinh, NgayNhapHoc, TenChaMe, SDTChaMe, DiaChi, LopHC)
    VALUES (DEFAULT, @TenHS, @NgaySinh, DEFAULT, @TenChaMe, @SDTChaMe, @DiaChi, @LopHC)

我使用 Dapper 在 C# 中編寫了 function 並使用DateTime類型傳遞動態參數。

public void ThemHocSinh(string TenHS, DateTime NgaySinh, string TenChaMe, string SDT, string DiaChi, string LopHC)
{
    using (MamNonBK context = new MamNonBK())
    {
        using (IDbConnection db = new SqlConnection(context.Database.Connection.ConnectionString))
        {
            var p = new DynamicParameters(); 
            p.Add("@TenHS", TenHS);
            p.Add("@NgaySinh", NgaySinh); 
            p.Add("@TenChaMe", TenChaMe); 
            p.Add("@SDTChaMe", SDT); 
            p.Add("@DiaChi", DiaChi);
            p.Add("@LopHC", LopHC);

            db.Execute("ThemHocSinh", p, commandType: CommandType.StoredProcedure);
        }
    }
}

但似乎我的程序崩潰了,因為 dateTime 參數不匹配。 我的系統日期和時間格式為“dd/MM/yyyy”。 當我調用 function 並傳遞 DateTime 參數時,這是錯誤的。

System.Data.SqlClient.SqlException:將 varchar 數據類型轉換為 datetime 數據類型導致值超出范圍。 該語句已終止。

在此處輸入圖像描述

由於 SQL 接收到的字符串未按所需方式格式化,因此您也可以使用:

p.Add("@NgaySinh", NgaySinh.ToString("yyyy-MM-dd"));

代替:

p.Add("@NgaySinh", NgaySinh);

我相信它會起作用的!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM