这是我的存储过程:
ALTER PROCEDURE [dbo].[sp_Update_Projecttijden]
@tabelnaam NVARCHAR(30) ,
@starttijd DATETIME,
@eindtijd DATETIME,
@tijd FLOAT,
@startid INT,
@eindid INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
-- DECLARE @DATEVARCHAR NVARCHAR(4000);
DECLARE @SQLCommand NVARCHAR(MAX) = N'
UPDATE ' + QUOTENAME(@tabelnaam) + N'
SET Start = @starttijd
, Einde = @eindtijd
, Tijd = @tijd
, StartID = @startid
, EindID = @eindid
WHERE StartID = @startid AND EindID=@eindid';
EXECUTE dbo.sp_executesql @sqlCommand,
' N @starttijd DATETIME, @eindtijd DATETIME, @tijd FLOAT, @startid INT, @eindid INT'
, @starttijd
, @eindtijd
, @tijd
, @startid
, @eindid;
END
抛出的错误是:
消息214,级别16,状态3,过程sp_executesql,第3行过程 期望参数' @ params'类型&n; ntext / nchar / nvarchar'。
我一直在寻找类似的问题/答案,但无法真正解决我的问题。 非常感谢所有帮助。
答案 0 :(得分:8)
问题是代码中的拼写错误。请注意,您的N
在您的字符串中,而不是在它之前
N
在string之前标识后续文本将是unicode时,您的错误实际上告诉您的过程需要unicode参数并改为VARCHAR
。
EXECUTE sys.sp_executesql @sqlCommand
, N'@starttijd DATETIME, @eindtijd DATETIME, @tijd FLOAT, @startid INT, @eindid INT'
, @starttijd
, @eindtijd
, @tijd
, @startid
, @eindid;
答案 1 :(得分:1)
您错误拼写了@params
参数:
你应该替换:
EXECUTE dbo.sp_executesql @sqlCommand,
' N @starttijd DATETIME, @eindtijd DATETIME, @tijd FLOAT, @startid INT, @eindid INT'
与
EXECUTE dbo.sp_executesql @sqlCommand,
N'@starttijd DATETIME, @eindtijd DATETIME, @tijd FLOAT, @startid INT, @eindid INT'