我试图只在SQL Server中创建一个存储过程,让用户可以选择是否要添加或更新记录。以下是我存储的专业人士的代码:
CREATE PROCEDURE Sproc_INSERTUPDATE_tblProducts
@ProductID bigint,
@ProductName varchar(50),
@Description varchar(50),
@Price money,
@DateCreated datetime,
@DateUpdated datetime,
@Choice bit output
AS
BEGIN
Select @Choice
If @Choice = 0
Begin
Insert into tblProducts (
ProductID,
ProductName,
Description,
Price,
DateCreated,
DateUpdated)
values (@ProductID,
@ProductName,
@Description,
@Price,
@DateCreated,
@DateUpdated)
Select * from tblProducts
End
Else If @Choice = 1
Begin
Update tblProducts Set ProductID = @ProductID,
ProductName = @ProductName,
Description = @Description,
Price = @Price,
DateCreated = @DateCreated,
DateUpdated = @DateUpdated
Select * from tblProducts
End
Else
Begin
Print 'Invalid choice. Please choose 0 or 1 only.'
End
END
GO
这是我执行存储专业版的代码:
USE StoreDB
Execute Sproc_INSERTUPDATE_tblProducts 4, 'Lotus', 'Flower', 85, GetDate, GetDate, 0
我的存储专业版没有遇到任何错误,但是当我尝试使用新查询执行时,我收到此错误消息:
GetDate():将数据类型nvarchar转换为datetime时出错。
答案 0 :(得分:2)
您无法将getdate()等函数传递给存储过程。声明一个datetime变量并改为使用它。
Declare @now datetime = getdate();
Execute Sproc_INSERTUPDATE_tblProducts 4, 'Lotus', 'Flower', 85, @now, @now, 0
答案 1 :(得分:0)
试试这个?
Execute Sproc_INSERTUPDATE_tblProducts 4, 'Lotus', 'Flower', 85, GetDate(), GetDate(), 0