【问题标题】:Procedure expects parameter '@params' of type 'ntext/nchar/nvarchar'过程需要“ntext/nchar/nvarchar”类型的参数“@params”
【发布时间】:2016-12-25 18:00:17
【问题描述】:

这是我的存储过程:

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 行过程 需要类型为“ntext/nchar/nvarchar”的参数“@params”。

我一直在寻找类似的问题/答案,但无法真正解决我的问题。 非常感谢所有帮助。

【问题讨论】:

标签: sql sql-server


【解决方案1】:

问题是您的代码中的拼写错误。请注意,您的 N 在您的字符串中,而不是在它之前。
N 在字符串之前标识以下文本将采用 unicode,您的错误实际上表明您的过程需要 unicode 参数并改为获取 VARCHAR .

EXECUTE sys.sp_executesql @sqlCommand
    , N'@starttijd DATETIME, @eindtijd DATETIME, @tijd FLOAT, @startid INT, @eindid INT'
    , @starttijd
    , @eindtijd
    , @tijd
    , @startid
    , @eindid;

【讨论】:

  • @sgeddes 我实际上删除了它,然后发现了实际错误,取消删除并编辑了:|
  • 呵呵,够公平的,我会投票并删除我的评论:)
  • @sgeddes 没关系,保留它 :)
【解决方案2】:

您拼错了@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'

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 2014-12-07
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 2017-07-16
    相关资源
    最近更新 更多