【问题标题】:Create a stored procedure but getting this message创建存储过程但收到此消息
【发布时间】:2023-02-24 11:57:46
【问题描述】:

此过程将更新列中的数据但以此消息结束

消息 4145,级别 15,状态 1,过程更新,第 26 行 [批处理开始第 4 行] 在“BEGIN”附近预期条件的上下文中指定的非布尔类型的表达式。

这个粗体字是问题出处

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE updatetings
    @i_id VARCHAR (50),
    @i_proccess VARCHAR (10),
    @i_line VARCHAR (50),
    @i_group VARCHAR (10),
    @i_date DATETIME

WITH EXEC AS CALLER
AS
BEGIN
    
   SET NOCOUNT ON
   SET  NUMERIC_ROUNDABORT OFF
   SET  ANSI_NULLS , ANSI_PADDING , ANSI_WARNINGS , ARITHABORT ,
   CONCAT_NULL_YIELDS_NULL , QUOTED_IDENTIFIER ON

    -- PROBLEM HERE 
    IF @i_proccess = 'xxx' 
    BEGIN
        UPDATE database SET
            date = @i_date,line = @i_line,Group = @i_group
        WHERE id = @i_id 
    END

END

EXEC updatetings '8','xx','xx','xx','2022-02-23 08:25:43.780'

【问题讨论】:

  • 你猜怎么了? MySQL 是与 SQL Server 完全不同的产品 - 帮自己一个忙,更正您的标签,以便合适的专家查看您的帖子。
  • 当我尝试它时它起作用了......所以不知道你的错误是什么。你真的有一个名为数据库的表吗? Datebase 和 group 都是保留字,所以如果你真的使用它们,你需要转义它们。

标签: mysql sql-server stored-procedures sql-update


【解决方案1】:

您收到的错误表明您没有在数据库中创建存储过程的权限。您可能需要检查分配给您的用户帐户的权限,并确保您拥有创建存储过程所需的权限。您还可以尝试以具有更高权限的不同用户身份运行查询,例如“sa”用户。

【讨论】:

  • 首先,这与错误无关。其次推荐使用sa 不是好的做法。
猜你喜欢
  • 2021-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-21
相关资源
最近更新 更多