【问题标题】:Insert using stored procedure in mulitple table in C#在 C# 中的多个表中使用存储过程插入
【发布时间】:2020-05-15 22:42:27
【问题描述】:
ALTER PROCEDURE [dbo].[sp_CreateProcess]
   @type varchar(50),--0
   @HospitalID varchar(50),--1
   @PatientID varchar(50) ,--2
   @PreAuthorization varchar(50) ,--3
   @Status varchar(50) ,--4
   @Amount varchar(50) ,--5
   @AmtWords varchar(500) ,--6
   @AppTrt varchar(50) ,--7
   @TypeTrt varchar(50) ,--8
   @AilName varchar(100) ,--9
   @AilCode varchar(50) ,--10
   @RoomType varchar(50) ,--11
   @RoomRent varchar(50) ,--12
   @Signature varchar(50) ,--13
   @ProcessBy varchar(50) ,--14
   @CorpScheme varchar(50) ,--15
   @InsuranceDiv varchar(50) ,--16
   @DrRmk varchar(50) ,--17
   @Created_Date datetime ,--18
   @Modified_Date datetime ,--19
   @Created_By varchar(50) ,--20
   @Modified_By varchar(50) ,--21
   @CoRmk varchar(100) ,--22
   @Remark varchar(1500) ,--23
   @CreatedBy varchar(50) ,--24
   @ModifiedBy varchar(50) ,--25
   @CreatedDate datetime ,--26
   @ModifiedDate datetime, --27
   @UserRole int --28
AS
BEGIN
    if @type = 'insertProcess'
    begin
        insert into Patient_Process_Status values
        (
            @HospitalID,
            @PatientID,
            @PreAuthorization,
            @Status,
            @AilName,
            @AilCode,
            @RoomType,
            @RoomRent,
            @Signature,
            @ProcessBy,
            @CorpScheme,
            @InsuranceDiv,
            @DrRmk,
            CURRENT_TIMESTAMP,
            CURRENT_TIMESTAMP,
            @Created_By,
            @Modified_By
        )

        update dbo.UserCommunication set RoleID=@UserRole
        where PatientID=@PatientID  and  HospitalID=@HospitalID

        update PD_Patients set LastUpdatedRole=@UserRole
        where PatientID=@PatientID and  HospitalID=@HospitalID

        insert into PostEnhancetbl values
        (
            @PatientID,
            @HospitalID,
            @Amount,
            @AmtWords,
            @AppTrt,
            @TypeTrt ,
            @CoRmk,
            @Remark,
            @CreatedBy,
            @ModifiedBy,
            CURRENT_TIMESTAMP,
            CURRENT_TIMESTAMP
        )

    end

    if @type='getTPADetails'
    begin
        select PS.*,LastUpdatedRole from Patient_Process_Status PS
        left join PD_Patients PD on PS.PatientID=PD.PatientID  and  PS.HospitalID=PD.HospitalID
        where PS.PatientID=@PatientID  and  PS.HospitalID=@HospitalID
    end
END

这是我得到的错误:

**

上面的代码是我的 SQL Server 2014 存储过程,我想加入两个表并将我的表单值插入到 2 个表中。

请帮我解决问题,让我知道为什么我遇到字符串到日期时间转换的错误

【问题讨论】:

标签: c# stored-procedures sql-server-2014 insert-query


【解决方案1】:

这里的问题是您将string 类型传递给datetime 参数,并且无法将该字符串转换为日期时间。

检查您的参数并确保您传递了日期时间格式参数值,或者您可以在 SQL Server 端使用 CONVERT 将参数转换为正确有效的 datetime 格式。

您可以尝试使用DateTime variableName 代替字符串variableName

希望这会有所帮助。

【讨论】:

  • 我正在通过 sql server 传递日期时间,我很困惑为什么会发生错误。
  • 显示所有参数的列表。这将有助于对类型有更多的了解。
  • 您能否在您的 C# 代码中显示完整的查询参数行?
  • public int insertProcess(string str, string HospitalID, string PatientID, string PreAuthorization, string Status, string Amount, string AmtWords, string AppTrt, string TypeTrt, string AilName, string AilCode, string RoomType, string RoomRent , string Signature, string ProcessBy, string CorpScheme, string InsuranceDiv, string DrRmk, string CoRmk, string Remark, string CreatedBy, string ModifyBy, string Created_By, string Modify_By, string UserRole)
  • 请检查您在 SQL 插入查询中传递参数的顺序是否与具有相同数据类型的表的列顺序完全匹配。
猜你喜欢
  • 2013-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 2017-10-03
  • 1970-01-01
  • 2018-09-13
相关资源
最近更新 更多