【问题标题】:Return max value with stored procedure使用存储过程返回最大值
【发布时间】:2019-01-20 05:52:39
【问题描述】:

我需要从表中获取最大值并将其返回给后端方法,但我这样做的方式错误。目前我有这样的事情

CREATE PROCEDURE [firstProcedure]
    @_maxEntityId VARCHAR(3) OUTPUT
BEGIN
    SET @_maxEntityId = 'SELECT MAX(entityId) FROM TableFrom'
    PRINT @_maxEntityId
    RETURN (@_maxEntityId)
END

试图打印@_maxEntityId,但什么也没看到。

【问题讨论】:

  • 您已将@_maxEntityId 设置为字符串'select max(...)'。您应该将其设置为 SET @_maxEntityId = (select max(entityId) from TableFrom)
  • @less,好吧,为什么它不打印任何结果?只有Commands completed successfully.
  • 它将打印出前3个字符'sel'
  • 不,照你说的做一遍Commands completed successfully.
  • 您可能刚刚运行了创建过程脚本吗?您需要执行存储过程。

标签: sql-server tsql stored-procedures


【解决方案1】:
CREATE PROCEDURE [firstProcedure]
    @maxEntityId INT OUTPUT
AS
BEGIN
    SELECT 
        @maxEntityId = MAX(entityId) 
    FROM
        TableFrom    
    PRINT @maxEntityId

    RETURN (@maxEntityId)
END

【讨论】:

  • 如果按照您提供的方式行事-请发送此消息Incorrect syntax near the keyword 'from'.
【解决方案2】:

您不需要返回结果,因为参数已经是 OUTPUT。 SP 应如下所示:

CREATE PROCEDURE [firstProcedure]
    @maxEntityId INT OUTPUT
AS
BEGIN
    SELECT 
        @maxEntityId = MAX(entityId) 
    FROM
        TableFrom        
END

这里是调用SP

DECLARE 
        @maxEntityId INT

EXEC    [firstProcedure]
        @firstProcedure= @firstProcedureOUTPUT

SELECT  @firstProcedureas N'@firstProcedure'

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 2010-11-02
    • 2015-11-06
    • 2021-06-13
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多