【问题标题】:Overwrite the return value of a Stored Procedure覆盖存储过程的返回值
【发布时间】:2012-05-04 07:39:53
【问题描述】:

通常,存储过程在成功执行时返回 0 而没有错误,而在存储过程遇到错误时返回 -1 等。
无论如何我可以覆盖存储过程中的 int 返回值吗?

【问题讨论】:

  • 使用函数而不是存储过程。
  • 你可能会 RETURN 来自过程的 int。

标签: sql sql-server-2005 stored-procedures


【解决方案1】:

这里是function description,它会给你任何你想要的回报。

或者如果你需要写权限,你可以在你的存储过程中添加输出参数 像这样的

CREATE PROCEDURE dbo.MyStoredProcedure (
    @myInput NVARCHAR(50),
    @myOutput INT OUTPUT )
AS
SELECT @myOutput = COUNT(*)
FROM MyTable
WHERE MyColumn = @myInput

【讨论】:

  • 这是一个函数,不是存储过程。
  • 它甚至会返回多个值 :) 不错...本来要发布相同的。
【解决方案2】:

SP 可以使用 select 语句返回您想要返回的任何内容,但理想情况下,您应该在需要返回单个值时使用函数。

你的问题的答案是肯定的!!

【讨论】:

  • select 语句不会更改返回值。尽管“是”是该问题的正确答案,但它没有用。当然,这个问题也暗示着“如果是,那怎么办?”。
  • @Guffa 我的意思是选择 1 并选择'a'
  • 无论你选择什么,它都不会改变返回值。这与从过程返回的结果/结果是分开的。一个过程可能返回零个或多个结果,但它总是有一个整数返回值。
【解决方案3】:

使用return keyword:

return 42

【讨论】:

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